「水」悠悠碧波
「水」悠悠碧波
https://ac.nowcoder.com/acm/problem/53679
题目
给定字符串 s,求一个最长的字符串 t,t 满足以下条件:
它是 s 的前缀;
它是 s 的后缀;
除前缀和后缀外,它还在 s 中出现过至少一次。
解题思路
暴力求解:先判断前缀和后缀,再判断中间是否存在该字符串。
C++代码
#include<iostream> using namespace std; int main(){ string s; cin >> s; int n = s.size(); int i = (n-1)/3; for(; i>=0; --i){ int a = i; int b = n-1; bool flag = true; while(a>=0){ if(s[a] != s[b]){ flag = false; break; } --a; --b; } if(!flag) continue; int m = n - 2*(i+1); for(int k=i+1; k<m; ++k){ int c = k; a = 0; while(a<=i){ if(s[a]!=s[c]){ break; } ++a; ++c; } if(a>i){ cout << s.substr(0, i+1) << endl; return 0; } } } return 0; }