|
|
- def prefixDict(worddict, prefix):
- # 给定一个单词前缀和一个字典序排序的字典, 找到第一个前缀不符合条件的单词
- # http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=299169&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%5B3046%5D%5Bvalue%5D%3D1%26searchoption%5B3046%5D%5Btype%5D%3Dradio%26sortid%3D311
- if prefix == "":
- return 0
- if len(worddict) == 0:
- return -1
- if worddict[0][0:len(prefix)] != prefix:
- return worddict[0]
- # then first is always match
- # 找到第一个不是
- l = 0
- r = len(worddict) - 1
- while l < r:
- mid = (l + r) / 2
- if worddict[mid][0:len(prefix)] != prefix:
- r = mid
- else:
- l = mid+1
- if worddict[l][0:len(prefix)] == prefix:
- return -1
- else:
- return worddict[l]
- assert prefixDict(["aab", "aab", "aab", "aab", "aab"], "aa") == -1
- assert prefixDict(["aab", "aab", "aab", "aab", "aab"], "aa") == -1
- assert prefixDict(["aab", "ab", "abb", "abc", "abx"], "aa") == "ab"
- assert prefixDict(["aab", "ab", "abb", "abc", "abx"], "ab") == "aab"
复制代码
应该是这样吧 |
|