#include "stdafx.h"
#include <iostream>
using namespace std;
//求最长前缀回文串
int palindromical(string s){
if (s.size() == 0)
return 0;
int fc = s[0];
int i = 0;
int maxlen = 1;
while (i < s.size())
{
if (s[i] == s[0])
{
int start = 0, end = i;
while (start <= end){
if (s[start] == s[end])
{
start++;
end--;
}
else{
break;
}
}
if (start > end){
maxlen = (maxlen > (i + 1) ? maxlen : (i + 1));
}
}
i++;
}
return maxlen;
}
//最长子回文串
int palindromic(string s){
if (s.size() == 0)
return 0;
int i = 0;
int maxlen = 0;
while (i < s.size()){
int start = i, end = i;
while (end+1<s.size() && s[end + 1] == s[end]) ++end;
i = end + 1;
while (start>0 && end+1<s.size() && s[start - 1] == s[end + 1]){
start--;
end++;
}
maxlen = (maxlen > (end - start + 1) ? maxlen : (end - start + 1));
}
return maxlen;
}
int main(){
cout<<palindromical("SoooS");
system("pause");
return 0;
}
回文串(最长前缀/最长子串)
最新推荐文章于 2024-05-10 11:20:16 发布