链接:http://acm.hdu.edu.cn/showPRoblem.php?pid=1238 很简单的一道字符串操作,我第一次用string 写题,就贴上来留到以后看。
#include <iostream>#include <algorithm>#include <string>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>using namespace std;vector<string> dict,dict2;string s[110];bool cmp(const string &s1, const string &s2){ return s1.length() < s2.length();}bool check(string str,int n);int main(){ int t,n; cin>>t; while(t--) { dict.clear(); dict2.clear(); cin>>n; string s; for(int i=0; i<n; i++) { cin>>s; dict.push_back(s); } sort(dict.begin(),dict.end(),cmp); s = dict[0]; for(int i=0; i<s.size(); i++) { for(int j=s.size(); j>i; j--) { string str = s.substr(i,j-i); dict2.push_back(str); } } int ans = 0; sort(dict2.begin(),dict2.end(),cmp); for(int i=dict2.size()-1; i>=0; i--) if(check(dict2[i],n)) { ans = dict2[i].size(); break; } cout<<ans<<endl; } return 0;}bool check(string str,int n){ string s; for(int i=0; i<n; i++) { s = dict[i]; reverse(s.begin(),s.end()); // cout<<s<<" "<<dict[i]<<"/n"; if(dict[i].find(str) == string::npos && s.find(str) == string::npos) return false; } return true;}新闻热点
疑难解答