LeetCode Longest Common Prefix

LeetCode解题之Longest Common Prefix

原题

找出一组字符串中最长的公共前缀。

注意点:

  • 字符串长度不一样
  • 考虑字符列表为空的情况

例子:

输入: str=[“hello”, “heabc”, “hewww”]
输出: “he”

解题思路

如果列表长度大于一,不妨把第一字符串当做基准,用一个指针来表示在此之前的字符是满足题目要求的。遍历每一个字符串,用指针对应的字符与基准中相应的字符比较,如不同则前面的子字符串就是所要求的结果;如果全都相同,则指针右移。还有一种情况要考虑,后面的字符串可能没有第一个字符串长,如果指针超过了最短的字符串也应该终止。

AC源码

class Solution(object):
    def longestCommonPrefix(self, strs):
        """ :type strs: List[str] :rtype: str """
        if not strs:
            return ""
        longest = strs[0]
        for i in range(len(strs[0])):
            for str in strs:
                if len(str) <= i or strs[0][i] != str[i]:
                    return strs[0][:i]
        return strs[0]


if __name__ == "__main__":
    assert Solution().longestCommonPrefix(["hello", "heabc", "hell"]) == "he"

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

你可能感兴趣的:(LeetCode,算法,python,前缀)