a ahat hat hatword hziee word
ahat hatword
题 意:找出一个单词,前半部是一个出现过的单词,后半部也是,记住,要严格满足这个条件
所以,其实也就是先查找一个单词的是否有前缀,再用这个单词除去前缀的部分查找是否存在一个这样的单词
CODE:
#include <iostream>
#include <string>
#include <map>
using namespace std;
map <string, int> mp;
string str[50005];
int main()
{
int n = 0, j, len;
while ( cin >> str[n] ) //输入所有的单词
mp[str[n++]] = 1; //构成映射
for ( int i = 0; i < n; ++i )
{
len = str[i].size();
for ( j = 1; j < len; ++j )
{
string s1 ( str[i], 0, j ); //分割单词
string s2 ( str[i], j, len - j );
if ( mp[s1] == 1 && mp[s2] == 1 ) //在单词中查找存在
{
cout << str[i] << endl; //输出该单词
break;
}
}
}
return 0;
}
原文:http://blog.csdn.net/acm_baihuzi/article/details/41554027