纯属交流,写给初学者。
A题:字典树或二分。当然最合适的还是字典树。
B题:和A题一样。只要处理下,把字典里的单词和要查的一同翻转即可。
//字典树思想很简单,关键多写,要把它当成小工具来用,基本算法不要当成你解题的全部。
C题:如果c++的map容器相当简单的。如果不用map 那么你可以写hash完成。具体方法建议看看:/forum/bbs_topic.do?postID=1931 这个帖子。
D题:字典树。 还有一种方法应该也可以跑过去,时间竟然比字典树快。主要是因为规模不大。
方法就是先排序,两两判断是否互相前缀式了就可以了。
E题:也是字典树。读入的单词建立一个字典树。然后将单词拆开在字典树中找,如果两半都找到了,那么说明这个单词是符合hat's Word 了。
F题:利用KMP的next 。生成next数组后,t=n-next[n]; printf("%d\n",n%t==0?n/t:1);