标签:子串 set Words freopen 10391 str 字符串 UVA string
本题属于想到解决方法就会很简单的题目.....但我没想到,第一反应是两层for循环枚举字符串,一看数据范围一定超时,然后又不愿动笔,这题真是活该没做出来555
正确思路:
确实是枚举,但没有必要两层for循环,我们结合substr截取子串再利用map或者set判重即可
1 #include <bits/stdc++.h> 2 using namespace std; 3 set<string> s,ans; 4 int main() 5 { 6 // freopen("in.txt","r",stdin); 7 // freopen("out.txt","w",stdout); 8 string str; 9 while(cin>>str){ 10 s.insert(str); 11 } 12 for(auto it=s.begin();it!=s.end();it++){ 13 string tmp = *it; 14 for(int i=1;i<tmp.size();i++){ 15 string s1 = tmp.substr(0,i); 16 string s2 = tmp.substr(i); 17 if(s.count(s1)&&s.count(s2)){ 18 ans.insert(tmp); 19 break; 20 } 21 } 22 } 23 for(auto it:ans) cout<<it<<endl; 24 return 0; 25 }
知识补充:
当看到字符串子串就应该想到substr了,字符串内部的find函数也可以用来查找子串,好久没做字符串题了,复习复习
标签:子串,set,Words,freopen,10391,str,字符串,UVA,string 来源: https://www.cnblogs.com/ndfwblog/p/14153012.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。