Loading

Leetcode - 14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解1 2021/8/28 O(?)

def longestCommonPrefix(strs) -> str:
    # 简单情况处理
    if len(strs)==0: return ''
    if len(strs)==0: return strs[0]

    # 貌似只能O(n^2)
    # 想办法减少规模
    strs=sorted(strs,key=lambda x:len(x))
    s=strs[0]
    r=len(s)
    if r==0: return ''
    again=True
    while again and r>0:
        again=False
        p=s[0:r]
        for x in strs:
            if not x.startswith(p):
                again=True
                break
        if again: r-=1
    return s[0:r]

if __name__ == '__main__':
    print('==============')
    print(longestCommonPrefix(["flower", "flow", "flight"]))
    print(longestCommonPrefix(["dog", "racecar", "car"]))
    print(longestCommonPrefix(["aaaaaaaaaaaaaaaaa", "bbb", "aaaabbbcar"]))
    print(longestCommonPrefix(["", "bbb", "aaaabbbcar"]))
    print(longestCommonPrefix([""]))
    print(longestCommonPrefix(["ljlkjlaskjf"]))
    print(longestCommonPrefix(["abc","abklsdjkfj2sdfh3sd","aak"]))
    print('==============')

posted @ 2021-08-28 20:58  wwcg2235  阅读(30)  评论(0)    收藏  举报