HDU 1238 Substrings

来源:互联网 发布:大数据时代联系的特点 编辑:程序博客网 时间:2024/05/29 10:48

题目地址:点击打开链接

思路:string的子串:
string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
查找成功时返回所在位置,失败返回string::npos的值

AC代码:

#include<iostream>#include<string>#include<algorithm>using namespace std;string a[102];int main(){string s1,s2;int t,n,i,j,mini,min,k,max;cin>>t;while(t--){max = 0;min = 200;cin>>n;for(i=0; i<n; i++){cin>>a[i];if(a[i].size() < min){min = a[i].size();mini = i;}}/*for(i=1; i<=a[mini].size(); i++)//i是字符的个数不是结束位置{for(j=0; j<i; j++){s1 = a[mini].substr(j,i);s2 = s1;reverse(s2.begin(),s2.end());for(k=0; k<n; k++){if(a[k].find(s1,0) == string::npos && a[k].find(s2,0) == string::npos)break;}if(k == n && i - j + 1 > max)max = i - j + 1;}}*/for(i=0; i<a[mini].size(); i++){for(j=1; j<=a[mini].size()-i; j++){s1 = a[mini].substr(i,j);s2 = s1;reverse(s2.begin(),s2.end());for(k=0; k<n; k++){if(a[k].find(s1,0) == string::npos && a[k].find(s2,0) == string::npos)break;}if(k == n && j > max)max = j;}}cout<<max<<endl;}return 0;}


0 0