14.最长公共前缀

方法一:

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        # 例子:strs = ["flower", "flow", "flight"]
        # strs[0] 指的是 "flower",以"flower"为基准
        for i in range(len(strs[0])):
            # 从第二个数开始于第一个数比较
            for string in strs[1:]:
                # 先看 string[i] != strs[0][i]:
                # 判断string[i]对应的字母是否与 基准对应的字母 相同
                # 如果不同就返回 基准 的前i个字母
                # i >= len(string):防止后面的字母长度比基准的长度短
                # "flow"的长度比"flower"短
                if i >= len(string) or string[i] != strs[0][i]:
                    return strs[0][:i]
        # 如果输入的是[""],输出的是 ""    
        return strs[0]

方法二:

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ''
        i = 0
        while True:
            try:
                # set()会去重复
                # strs = ["flower","flow","flight"]
                # i = 0时,sets中存放{'f'},判断stes长度为1,表明是公共字母
                # i = 2时,sets中存放{'o','i'},长度为2,表明没有公共字母
                sets = set(string[i] for string in strs)
                if len(sets) == 1:
                    result += sets.pop()
                    i += 1
                else:
                    break
            except Exception as e:
                break
        return result

 

posted @ 2019-08-21 15:35  我叫郑小白  阅读(137)  评论(0编辑  收藏  举报