华师一附中OI组
标题:
回文串的判断
[打印本页]
作者:
admin
时间:
2018-5-18 19:03
标题:
回文串的判断
常见的有有两种方法:一种是把这个字符串颠倒,然后判断和原来的串是否相同
bool r1(string s)
{
string t="";
for (i=0;i<=s.size()-1;i++) t=t+s[i]; ///颠倒
return s==t;
}
复制代码
第二种是直接原地比较,看第一位是否等于最后一位,第二位是否等于倒数第二位,这又有两种做法,第一种是用两个指针分别指着头和尾,一个加一个减的比较。
bool r2(string s)
{
int i=0,j=s.size()-1;
bool b=1;
while (b && i<j)
if (s[i]!=s[j]) b=0;
else
{
i++;
j--;
}
return b;
}
复制代码
另外一种就是递归。
bool r3(string s)
{
int l=s.size();
if (l<=1) return 1;
else
if (s[0]!=s[l-1]) return 0;
else
{
string ss=s.substr(1,l-2);
return r3(ss);
}
}
复制代码
作者:
admin
时间:
2018-5-25 20:16
原地比较的绝妙做法
bool r4(string s)
{
bool b=1;
for (int i=0,j=s.size()-1; b && i<j; i++,j--)
if (s[i]!=s[j]) b=0;
return b;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2