UVA 10391 Compound Words

题意:给定若干单词,按字典序输出由两个单词拼接而成的单词

思路:这算是一道水题吧,但是由于个人对字符串处理的知识点实在太贫瘠,参考参考别人写的代码查漏补缺,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 << "\n";
                break;
            }
        }
    }
    return 0;
}

 

posted @ 2020-06-04 21:41  ジャスミン  阅读(94)  评论(0编辑  收藏  举报