这个题不是官网上热题100范围,因为这题也经常考所以放到这里。
这个其实思路相对固定,就是假设第1个元素为最长公共前缀,因此和其他元素比较得出最长公共前缀。
python
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
first_str = strs[0]
for i in range(len(first_str)):
for j in range(1,len(strs)):
if first_str[i] != strs[j][i]:
return first_str[0:i]
return first_str
上面存在一个bug是strs[j][i]可能存在数组越界风险,官方可以的测试用例比较简单,所以没出现报错,可看下面的代码。
python
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
for i in range(len(strs[0])):
ch = strs[0][i]
for s in strs[1:]:
if i < len(s) and ch != s[i]:
return strs[0][:i]
return strs[0]
python
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
prefix = strs[0]
for s in strs[1:]:
while not s.startswith(prefix):
prefix = prefix[:-1]
if not prefix:
return ""
return prefix