-
题目描述:
-
输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
-
输入:
-
存在多组数据,每组数据一行字符串,长度不大于100。
-
输出:
-
输出回文子串的最大长度。
-
样例输入:
-
google
-
样例输出:
-
4
-
回文子串,对称性。在LeetCode也做到了,突然搞不懂当初为什么要这么做了。。。。。
-
然后又看了一下,发现当初是从长到短查找符合条件的子串的
-
-
#include<iostream> #include<stdlib.h> #include<string.h> using namespace std; char v[101]; int vlen; bool rev(int len) { int k=0,j; bool ga; while(k+len<=vlen) { //cout<<k<<" "<<len<<endl; ga=true; for(j=k;j<(k+len/2);j++) { //cout<<j<<" k:"<<k<<" "<<v[j]<<" "<<v[k+len-1-(j-k)]<<endl; if(v[j]!=v[k+len-1-(j-k)]) { ga=false; break; } } if(ga==true) return true; k++; } return false; } int main() { while(cin>>v) { vlen=strlen(v); int i; bool g1=false; for(i=vlen;i>=1;i--) { if(rev(i)) { cout<<i<<endl; g1=true; break; } } if(g1==false) cout<<0<<endl; } return 0; } /************************************************************** Problem: 1252 User: 午夜小白龙 Language: C++ Result: Accepted Time:0 ms Memory:1520 kb ****************************************************************/
-