1. 程式人生 > >python - 最長字首

python - 最長字首

編寫一個函式來查詢字串陣列中的最長公共字首
如果不存在最長公共字首,返回空字串 ‘’

示例 1:
輸入: [“flower”,”flow”,”flight”]
輸出: “fl”

示例 2:
輸入: [“dog”,”racecar”,”car”]
輸出: “”
解釋: 輸入不存在最長公共字首

說明:所有輸入只包含小寫字母 a-z

因為沒有想到好方法,這裡用了一個取巧的方法,如果多加單詞則需要增加變數。

a,b,c = ['flower', 'flow', 'flight']
# a,b,c = ['dog','racecar','car']
def start(d,e,f):
    for k,v,s in zip(d,e,f):
        if k==v and v==s:
            print(k,end='')
        else:
            print(' ',end='')
start(a,b,c)

在這裡插入圖片描述

方法二:
老師講的一種方法。

def solution(strs):
    # 如果strs為空,返回空字串
    if not strs:
        return ''
    # 找出最長公共字首,只需要對比最長的字串和最短的字串
    s1 = min(strs)  # 根據ASCII碼來排序的,這裡需要自己理解,最大的ASCII包含最小的。
    s2 = max(strs)
    for i, c in enumerate(s1):
        # 遍歷最短的字串,i為計數器,c為s1的字母
        if c != s2[i]:  # 如果字母和s2中某次不相等則返回s1,到i-1結束
            return s1[:i]
    return s1   


print(solution(['flower', 'flow', 'flight']))