题意:给定若干单词,按字典序输出由两个单词拼接而成的单词
思路:这算是一道水题吧,但是由于个人对字符串处理的知识点实在太贫瘠,参考参考别人写的代码查漏补缺,555
assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。
count可以实现判断拼接的单词是否包含在原来的集合中,这个一开始真没有想到,竟然暴力比对
#include<iostream> #include<string> #include<set> using namespace std; int main(void) { string s; set<string>word; while (cin >> s)word.insert(s); for (set<string>::iterator it = word.begin(); it != word.end(); ++it) { int len = (*it).length(); string a, b; for (int j = 1; j <= len - 1; j++) { a.assign(*it, 0, j); // assign方法可以理解为先将原字符串清空,然后赋予新的值作替换。 b.assign(*it, j, len - j); if (word.count(a) && word.count(b)) { cout << *it << " "; break; } } } return 0; }