# encoding=utf-8"""編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 ""。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共字首。
說明:所有輸入只包含小寫字母 a-z 。
""""""
演算法:處理特例:列表為空
首先按照字串長度公升序排列
遍歷第乙個字串的每個字元,
如果後面的每個字串同一位置的字元相同,則新增到res;
否則return
複雜度分析:
時間複雜度:o(s),s 是所有字串中字元數量的總和。
最壞的情況下,n 個字串都是相同的。演算法會將str0與其他字串都做一次比較。這樣就會進行s次字元比較。
空間複雜度:o(1),我們只需要使用常數級別的額外空間。
"""class solution(object):
def longestcommonprefix(self, strs):
""":type strs: list[str]
:rtype: str
"""if not strs:
return ''
# 定義結果list
res =
# 按字串長度排序,取第乙個最短的字串為標準
strs.sort(key = len)
str0_len = len(strs[0])
for each_letter_idx in range(str0_len):
# 遍歷排序後的strs的第乙個字串的每個字元,
for each_str in strs[1:]:
# 遍歷strs第一到最後乙個字串
if strs[0][each_letter_idx] != each_str[each_letter_idx]:
# 如果不相等,則退出迴圈,返回結果
return "".join(res)
else:
continue
# 如果後面的每個字串同一位置的字元相同,則新增到res;
# 返回結果字串
return "".join(res)
s = solution()
print(s.longestcommonprefix(["flower","flow","flight"]))
print(s.longestcommonprefix(["dog","racecar","car"]))
print(s.longestcommonprefix())
print(s.longestcommonprefix([""]))
print(s.longestcommonprefix(["aca", "cba"]))
print(s.longestcommonprefix(["aca", "aba"]))
最長公共字首 LeetCode
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例1 輸入 dog rececar car 輸出 說明 所有輸入只包含小寫字母 a z。首先找到長度最小的字串 minstring,假設此字串為公共字首,依次...
leetcode 最長公共字首
題目 編寫乙個函式來查詢字串陣列中的最長公共字首,如果不存在公公字首,則返回空字串 示例 輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 思路 第一步 令乙個變數等於其中乙個 的首字母,依次看後面的字串是否也有,若沒有跳出整層迴圈,若有計入陣列中 ...
leetcode 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。var longestcommonprefix function strs s...