这个题,学习了很多关于迭代器和STRING的知识。。。
对于集合set
- 创建迭代器用格式 set::iterator it; 目前不是很清楚双冒号什么用。
- set.find()函数,如果找到,返回此处的迭代器,如果找不到,返回set.end
- set.insert(x),在集合中插入x
对于string
- 流式输入cin>>string
- string.c_str 返回一个处理后的临时指针,指向一个str数组
- string.substr (begin,length) 如果不加Length,那么是从头到尾
- string.substring (begin,end) 和前面的substr有点不一样
- string.length() 基本操作
#include<bits/stdc++.h>
using namespace std;
set<string> words;
int main(void)
{
string str;
while(cin>>str)
{
words.insert(str);
}
set<string>::iterator it;
for (it=words.begin();it!=words.end();it++)
{
str=*it;
for(int i=0;i<str.length()-1;i++)
{
string former=str.substr(0,i+1);
string later=str.substr(i+1,str.length()-(i+1));
if( words.find(former)!=words.end() && words.find(later)!=words.end() )
{
printf("%s\n",str.c_str());
break;
}
}
}
return 0;
}