“回文串”是一个正读和反读都一样的字符串,字符串由数字和小写字母组成,比如“level”或者“abcdcba”等等就是回文串
简单的一句话概括就是关于中心左右对称的字符串
判断一个字符串是否回文,可以先比较第一个字符和最后一个字符是否相同,不同则不是回文,相同则比较第二个和倒数第二个,以此类推,直到比较到中间两个(字符串长为偶数)或中间一个(字符串长为奇数)时,如果仍相同,则为回文
aoa,opopo,aa 这种比较短,如果碰到长度太长的怎么办
ASCII A:97 a:65
思路:回文字符串正向遍历与逆向遍历结果都是一样的,因此我们可以准备两个对撞指针,一个正向遍历,一个逆向遍历
//首指针
int left = 0;
//尾指针
int right = str.length() – 1;
//首尾往中间靠
while(left < right){
……
}
具体做法:
step 1:准备两个指针,一个在字符串首,一个在字符串尾。
step 2:在首的指针往后走,在尾的指针往前走,依次比较路过的两个字符是否相等,若是不相等则直接就不是回文。
step 3:直到两指针在中间相遇,都还一致就是回文。因为首指针到了后半部分,走过的正好是尾指针走过的路,二者只是交换了位置,比较相等还是一样的。
知识点:双指针双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个指针(特殊情况甚至可以多个),两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针),从而达到我们需要的目的。
回文字符串除了答题似乎没有什么用处 :
代码实现:
string S = Console.ReadLine();
bool flag = true;
for (int i=0;i<S.Length;i++)
{
if (S[i] != S[S.Length-1-i])
{
flag = false;
break;
}
}
if (flag == true)
{
Console.WriteLine(“是”);
}
else
{
Console.WriteLine(“不是”);
}
Console.ReadKey();
今天的文章回文字符串_C语言判断字符串是不是回文分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/50999.html