最长回文子串<通过从中间插入然后向两边扩展>

来源:互联网 发布:windows 连接informix 编辑:程序博客网 时间:2024/04/29 20:00

thinking:通过从选择每个字符,然后判断其右边是否有与其相同的字符串,如果有相同的字符串则r1++,直到无与选择的这个字符相同的字符,然后开始左右判断字串是否相同,相同则接着判断,最后返回的长度为r1-l1-1;

代码:

#include <iostream>#include <string.h>using namespace std;char str[100];int len;int fun(char str[],int mid){int l1=mid-1,r1=mid+1;while(str[r1]==str[mid]){r1++;}while(l1>=0&&r1<len&&str[l1]==str[r1]){l1--;r1++;}return r1-l1-1;}int main(){int i,j,maxn,len2;cin >> str;len=strlen(str);maxn=0;for(i=0;i<len;i++){len2=fun(str,i);if(len2>maxn)maxn=len2;}cout << maxn << endl;return 0; } 


0 0
原创粉丝点击