Leetcode-Longest Common Prefix-Python

Longest Common Prefix

最長相同前綴:給定一個字符串數組,找出其中最長的共同前綴。這裏leetcode並沒有說明共同前綴是指兩兩之間的前綴還是所有字符串的前綴,實際題意是指採用所有字符串的共同前綴。
Description

解題思路
若字符串數組爲空則返回空字符串;
否則從所有字符串中找出最短的字符串,依次將最短字符串的每個元素和所有字符串對應位置上的元素進行比較,若不同則停止比較並返回;
若全部相同,則返回最短字符串。

        if not strs:
            return ""

        shortest = min(strs, key=len)

        for i in range(len(shortest)):
            for string in strs:
                if shortest[i] != string[i]:
                    return shortest[:i]

        return shortest

改進
將字符串數組進行排序(注意,這裏是按照字母表順序排序,而不是根據長度排序),排序後實際只要比較第一個和最後一個字符串的共同前綴即可,因此大大提升了運行時間。

        if not strs:
            return ""

        strs.sort()
        first = strs[0]
        last = strs[-1]
        minlen = min(len(first), len(last))

        for i in range(minlen):
            if first[i]!=last[i]:
                return first[:i]

        return first[:minlen]
發佈了42 篇原創文章 · 獲贊 107 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章