14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
第n次尝试(错的)
class Solution(object):
def longestCommonPrefix(self, strs):
ss = ""
if len(strs) == 0:
return ""
if len(strs) == 1:
return strs[0]
else:
if strs[0] != "":
res = []
for s in strs:
r = list(s)
res.append(r)
for i, x in enumerate(res):
if i + 1 < len(res):
if res[i][0] == res[i + 1][0]:
ss = '' + res[i][0]
if res[i][i] == res[i + 1][i]:
ss = ss + res[i][i]
else:
ss = ""
return ss
感觉越写越陷入死胡同,被循环绕晕了==*
思路:把每个字符串拆成一个个字母再存到列表中,然后再用循环去一个个比较字母,相同的字母再存到一个新的字符串中,最后返回。
第一次失败,没考虑输入值为
[]
,然后加了个
if len(strs)==0
的判断
第二次失败,没考虑输入值为
["a"]
,然后加了个
if len(strs) == 1
的判断
第三次失败,没考虑输入值为
["",""]
,然后加了个
if strs[0] != ""
的判断
第四次失败,没考虑输入值为
["a","a"]
,开始思考,,,感觉不太行,害
乖乖跑去看大佬的解答,看到个挺好的
# 取一个单词 s,和后面单词比较,看 s 与每个单词相同的最长前缀是多少!遍历所有单词。
class Solution:
def longestCommonPrefix(self, s: List[str]) -> str:
if not s:
return ""
res = s[0]
i = 1
while i < len(s):
while s[i].find(res) != 0:
res = res[0:len(res)-1]
i += 1
return res
作者:powcai
链接:https://leetcode-cn.com/problems/longest-common-prefix/solution/duo-chong-si-lu-qiu-jie-by-powcai-2/
来源:力扣(LeetCode)
哭了哭了,孩子累了