回文字符串:将字符串首位交换后与原字符串一直。例如:noon ==》 noon ;aabbaa ==> aabbaa
不是回文字符串的 aabdaa ==> aadbaa;
有三种实现方法,这里贴出两种:
#include<iostream>
#include<string>
using namespace std;
bool isPalindrome1(string str){
int len = str.size();
int i = 0,j = len - 1;
while (i < j && str[i] == str[j]){
i++;
j--;
}
return j <= i;//返回结果这里要注意!
}
bool isPalindrome2(string str){
string result;
int len = str.size();
for(int index = 0;index < len;index++){
result = str[index]+ result;
}
return !result.compare(str);
}
int main(){
cout<<isPalindrome1("noon")<<endl;
cout<<isPalindrome1("")<<endl;
cout<<isPalindrome1("erdter")<<endl;
cout<<isPalindrome2("noon")<<endl;
cout<<isPalindrome2("")<<endl;
cout<<isPalindrome2("erdter")<<endl;
return 0;
}
第三种是取len =str.size()
str[:len//2] == reverse(str[len-len//2:])
reverse函数(自己实现)是字符串首尾交换