求助大佬,最长公共前缀
在网上搜了,但是运行不了,而且看不懂{:10_266:}大佬如果有其他方法麻烦标一下注释,谢谢!!
class Solution:
def longestCommonPrefix(self, strs: List) -> str:
def preFix(str1, str2):
l = str1 if len(str1) <= len(str2) else str2
for i in range(len(l)):
if str1 != str2 and i == 0:
return ''
if str1 != str2:
return l[:i]
if str1 == str2 and i == len(l) - 1:
return l
if strs == [] or '' in strs:
return ''
if len(strs) == 1 and '' not in strs:
return strs
res = []
longPreFix = strs
res.append(longPreFix)
for s in strs:
p = preFix(longPreFix, s)
if p == '':
res.pop()
res.append('')
return res
elif len(p) < len(res):
res.pop()
res.append(p)
return res
class Solution:
def longestCommonPrefix(self, strs: list) -> str:
start = 1
stillmatch = True
while start <= len(strs):
#将字符串数组第一个字符串之后的字符串分别与第一个字符比较
for j in range(1, len(strs)):
if strs[:start] != strs[:start]:
stillmatch = False
break
#一旦发现不匹配则可以退出循环
if not stillmatch:
break
#更新比较的字符串前缀的位置
start += 1
return strs[:start-1] 本帖最后由 傻眼貓咪 于 2021-10-22 13:59 编辑
这是我之前在力扣的题解,希望对你有帮助 梦回连营 发表于 2021-10-22 13:47
class Solution:
def longestCommonPrefix(self, strs: list) -> str:
start = 1
stillmatch = True
while start <= len(strs):
# 将字符串数组第一个字符串之后的字符串分别与第一个字符比较
for j in range(1, len(strs)):
if strs[:start] != strs[:start]:
stillmatch = False
break
# 一旦发现不匹配则可以退出循环
if not stillmatch:
break
# 更新比较的字符串前缀的位置
start += 1
return strs[:start - 1]
num = eval(input("请输入一串字符串:"))
nums = num.longestCommonPrefix(num)
print(nums)
报错:
Traceback (most recent call last):
File "C:\Users\mate\AppData\Roaming\JetBrains\PyCharmCE2021.2\scratches\second.py", line 43, in <module>
class Solution:
File "C:\Users\mate\AppData\Roaming\JetBrains\PyCharmCE2021.2\scratches\second.py", line 44, in Solution
def longestCommonPrefix(self, strs: list) -> str:
TypeError: 'type' object is not subscriptable 本帖最后由 梦回连营 于 2021-10-23 19:35 编辑
pallas 发表于 2021-10-23 14:11
class Solution:
def longestCommonPrefix(self, strs: list) -> str:
...
你类都没有实例化怎么运行啊。先把对象实例化啊,这你都还不会急着去学什么算法啊
a = Solution()
a.函数()
还有eval函数是这么用的吗?它是把所有字符串当代码,你随便输入一个字符串当成变量赋值能运行吗?
人家要求你输入的是一个列表, 列表里的是字符串,你题目都没看明白
一步一步来吧,兄弟 梦回连营 发表于 2021-10-23 19:29
你类都没有实例化怎么运行啊。先把对象实例化啊,这你都还不会急着去学什么算法啊
a = Solution()
a. ...
大佬,关于代码我有几个问题:
1.stillmatch的作用是什么?还有True和Flase
2.最后return strs[:start -1],为什么要减1呢? 傻眼貓咪 发表于 2021-10-22 13:31
这是我之前在力扣的题解,希望对你有帮助
大佬,他没有返回值啊
请输入一个串字符串:'asd''asdx''asdw'
它返回空 本帖最后由 qq1151985918 于 2021-10-24 15:23 编辑
class Solution:
def longestCommonPrefix(self, strs: List) -> str:
for i in range(len(strs), 0, -1):
for j in strs:
if strs[:i] != j[:i]:
break
else:
return strs[:i]
else:
return ""
qq1151985918 发表于 2021-10-24 15:13
大佬,能写一下注释吗?{:10_254:}
页:
[1]