回文字符串:
正着写与反着写出的结果是同一个字符串
判断方法:
1.一字符串s,若s满足:s与s.reverse()是同一个字符串,则字符串是回文字符串
2.若字符串的第i(0 <= i && i < length)位与第length - i位是同一个字符,则该字符串是回文字符串
求字符串s最大回文字符串的C++程序:
/*
* 输出回文子串,并输出,若有长度相同的几个回文子串,
* 同时输出这几个回文子串
*
*/
#include<iostream>
#include<string>
using namespace std;
//判断是否是回文字符串
bool isPalindrome(const char *p, int len){
for(int i=0;i < len;i++){
if(p[i] != p[len-1-i])
return false;
}
return true;
}
//输出回文子串
void prtPalindrome(const char *p, int len){
for(int i=0;i < len;i++){
cout<<*p++;
}
cout<<endl;
}
int main(){
string s = "";
// cin>>s;
getline(cin, s, '\n');//接收带空格的字符串
const char *p = s.c_str();
//从长度为length的串开始查找回文子串
bool isFound = false;
for(unsigned int len=s.length();len > 0;len--){
for(unsigned int j=0;j < s.length()-len+1;j++){
if(isPalindrome(p+j, len)){
prtPalindrome(p+j, len);
isFound = true;
}
}
if(isFound)
break;
}
return 0;
}