You are to find all the two-word compound words in a dictionary. A two-word compound word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary. Input Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 120,000 words. Output Your output should contain all the compound words, one per line, in alphabetical order. Sample Input a alien born less lien never nevertheless new newborn the zebra Sample Output alien newborn

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
const int maxn=2e5;
int a[maxn], t = -1, sum = 0;
char s[maxn][30], ch1[30], ch2[30]; int Hash(char *str)
{
int seed = 31, hash = 0;
while (*str)
hash = hash * seed + *str++;
return hash & 0x7FFFFFFF;
}
int Find(int key, int l, int r)
{
int mid = (l + r) / 2;
if(l>r) return 0;
if(a[mid]==key) return 1;
else if(a[mid]>key) Find(key, l, mid - 1);
else Find(key, mid + 1, r);
}
int main()
{
int i, j, k, l;
while(gets(s[++t])) a[t] = Hash(s[t]);
sort(a, a + t);
for (i = 0; i<t; i++)
{
l = strlen(s[i]);
for (j = 0; j<l - 1; j++)
{
for (k = 0; k <= j; k++)
ch1[k] = s[i][k];
ch1[j + 1] = '\0';
for (k = j + 1; k<l; k++)
ch2[k - j - 1] = s[i][k];
ch2[l - j - 1] = '\0';
if (Find(Hash(ch1), 0, t - 1) + Find(Hash(ch2), 0, t - 1) == 2)
{
printf("%s\n",s[i]);
break;
}
}
}
return 0;
}

最新文章

  1. AlertDialog的六种创建方式
  2. 控制移动端页面的缩放(meta)
  3. linux在home目录下使用ls命令卡死
  4. 在Android工程中运行main函数
  5. JS表单设置值
  6. apache rewrite设置 禁止某个文件夹执行php文件
  7. 简单模仿javascript confirm方法的例子
  8. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
  9. poj2823Sliding Window(线段树求最值)
  10. 阻止JS事件冒泡传递(cancelBubble 、stopPropagation)
  11. JavaScriptCore全面解析 (下篇)
  12. Node.js进阶:5分钟入门非对称加密方法
  13. AX2012 ERP “系统慢”调优---跟踪SQL执行,优化代码
  14. android6.0 Activity(四) Surface创建
  15. centos在图形界面和命令行之间切换的快捷键是什么?
  16. js版RSA算法
  17. verilog语法学习目录
  18. 【Linux】好玩的linux命令
  19. 使用deque模块固定队列长度,用headq模块来查找最大或最小的N个元素以及实现一个优先级排序的队列
  20. Linux工作管理

热门文章

  1. 实现支持多用户在线的FTP程序(C/S)
  2. linux中dd相关命令骚操作
  3. HTML 颜色输入框修改事件的触发,以及获取修改后的颜色
  4. Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
  5. iOS核心动画高级技巧 - 3
  6. Linux系统中文件行末尾出现^M的原因及解决办法
  7. selenium针对浏览器滚动条的操作
  8. SCAU-1076 K尾相等数
  9. PostGIS安装教程
  10. Java的Arrays类 基本用法