ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

回文字符串

2022-08-01 13:32:15  阅读:155  来源: 互联网

标签:遍历 Console step 字符串 回文 指针


“回文串”是一个正读和反读都一样的字符串,字符串由数字和小写字母组成,比如“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();

 

标签:遍历,Console,step,字符串,回文,指针
来源: https://www.cnblogs.com/wujie-8399/p/16511874.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有