本帖最后由 fantacyleo 于 2014-9-26 12:19 编辑
我的思路如下:
先把字符串1排序,按你的题意描述,字符串1是固定的,变的是每次与它比较的字符串2,那么实际上这里对字符串1的排序时间复杂度只有O(1)
字符串1一旦排序完毕,后面的查找就是对字符串2的每个字母进行二分查找,由于字符串1固定,每次查找的时间复杂度仍然为O(1)。而字符串2的每个字符都要查一次(正如你的举例,完全可能出现最后一个字符不在字符串1中的情形,故每个字符都要查一次),设字符串2的长度为N,那么整个算法的时间复杂度为排序的O(1)加上查找的N*O(1),结果是O(N),即线性复杂度,也就是说字符串2的长度每增加1倍,所需运行时间也翻倍
由于字符串2的每个字符都要查找一次,这证明本题的时间复杂度下界也是O(N),故以上就是最快算法 |