备注: 转至 周磊的博客,http://blog.youkuaiyun.com/v_JULY_v/article/details/6313257
1、澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?
2、3点15的时针和分针的夹角是多少度
3、有8瓶水,其中有一瓶有毒,最少尝试几次可以找出来
4、 给一篇文章,里面是由一个个单词组成,单词中间空格隔开,再给一个字符串指针数组,比如 char *str[]={"hello","world","good"};
求文章中包含这个字符串指针数组的最小子串。注意,只要包含即可,没有顺序要求。
分析:文章也可以理解为一个大的字符串数组,单词之前只有空格,没有标点符号。
解决思路 1:
维护 一个队列+KMP算法
让字符的全部序列入队,比较完一个就出队,保持长度
至于字符串的六种序列,实现排列预处理,
最后,时间复杂度为:O(字符事先排列)+O(KMP 比较)。
解决思路2:
这个用kmp算法的话,明显不如用trie好;
将str 中的成员建一棵trie树,这样的话字符事先不需要排序,复杂度应该低些。
解决思路3:
我觉得这个应该用DFA(即有限状态自动机)。
80.阿里巴巴一道笔试题(运算、算法)
问题描述:
12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
这个笔试题,很YD,因为把某个递归关系隐藏得很深。