3 solutions
-
3
枚举奇偶,向两边扩张 #include<bits/stdc++.h> using namespace std; int main() { string s; getline(cin,s); int res=0; for(int i=0;i<s.size();i++) { int l=i-1,r=i+1; //回文串长度是奇数的情况 while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; res=max(res,r-l-1); l=i,r=i+1; //回文串长度是偶数的情况 while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; res=max(res,r-l-1); } cout<<res; return 0; }
-
1
枚举奇偶,向两边扩张 #include<bits/stdc++.h> using namespace std; int main() { string s; getline(cin,s); int res=0; for(int i=0;i<s.size();i++) { int l=i-1,r=i+1; //回文串长度是奇数的情况 while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; res=max(res,r-l-1); l=i,r=i+1; //回文串长度是偶数的情况 while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; res=max(res,r-l-1); } cout<<res; return 0; }
-
-3
#include<bits/stdc++.h> using namespace std; int main(){ string shuru; cin>>shuru; int jishu=0; for(int i=0;i<shuru.size();i++) { int qian=i-1,hou=i+1; while(shuru[qian]==shuru[hou]&&qian>-1&&hou<shuru.size()) { qian--; hou++; } jishu=max(hou-qian-1,jishu); qian=i; hou=i+1; while(shuru[qian]==shuru[hou]&&qian>-1&&hou<shuru.size()) { qian--; hou++; } jishu=max(hou-qian-1,jishu); } cout<<jishu; return 0; }
- 1
Information
- ID
- 79
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 89
- Accepted
- 23
- Uploaded By