Longest Word in Dictionary through Deleting

自定义排序之后,利用子序列检查是一种很直觉的算法

class Solution(object):
    def findLongestWord(self, s, d):
        """
        :type s: str
        :type d: List[str]
        :rtype: str
        """
        def comparator(stringA, stringB):
            if len(stringA) != len(stringB):
                return cmp(len(stringB), len(stringA))
            return cmp(stringA, stringB)

        d.sort(cmp=comparator) 

        for string in d:
            if self.check(string, s):
                return string
        return ''

    def check(self, stringA, stringB):
        n, m = len(stringA), len(stringB)
        cur = 0
        for i in xrange(m):
            if stringB[i] == stringA[cur]:
                cur += 1
            if cur >= n:
                return True
        return False

时间复杂度O(nlgn),这里是不考虑字符串长度的时间复杂度

当然,如果不排序直接比较也是可以的,时间复杂度是O(n),同样也是不考虑字符串的长度问题,方法比较trivial

results matching ""

    No results matching ""