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
个人感受:
一小段时间没有更新博客了,大二最后一学期了,课程比较多,平时作业也挺繁多的,只能抽空刷刷题,写博客了,算法之路是需要不断坚持的,对于2019ACM春季训练,可能从前的自己还在迷茫自己该干什么,现在的目标就是走上算法道路,在2019年多多争取与其他优秀的学校竞技的机会!学校老师每周也安排了两套训练真题,不管如何,坚持就完事了!
个人分析:
这个题题目意思很好懂,就是给你很多个字符串,然后找出其中特殊的字符串:由其他输入的两个字符串拼接而成。
做题感受:
起初我的想法就是和分析一样,纯暴力,用vector存放,然后双重for循环,一个一个找,一个一个拼接,然后用STL里面的find函数去查找,显然时间复杂度很高了(毕竟暴力好~~),后面我就去学习了下别人的代码,优秀的人说到这个题时间复杂度限制在O(n的平方) ,然后是用的set容器,后面改了改,ac了
思路是:我们对每个个输入的字符串进行不断切割,分左右两部分,然后在set容器里面去查找,如果两个都找到了,那么我们就输出这个字符串
这个题,不仅让我回忆了下STL,还用到了新的函数substr进行字符串切割,挺不错的!
下面是暴力求法,然后Wa了的代码:
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
#include<map>
#include<bits/stdc++.h>
#include<stack>
#include<functional>
#include