最长公共前缀--python实现
·
字符串BM84:
题目如下:

Python实现代码如下:
#
# @param strs string字符串一维数组
# @return string字符串
#
from typing import List
class Solution:
def longestCommonPrefix(self , strs: List[str]) -> str:
# 返回结果初始化为""
res = ""
# 字符串数组中每个字符串的长度
lens = []
# 处理特殊情况,字符串数组为空时,返回""
if not strs:
return ""
# 获取字符串数组中每个字符串的长度
for str in strs:
lens.append(len(str))
# 取字符串最小长度
help_len = min(lens)
# 最小长度小于1,即存在""字符串,则最长前缀为"",返回
if help_len < 1:
return ""
# 循环次数最多为字符串的最小长度
for i in range(help_len):
# 取第一个字符串的的第i个位置的字符,后续字符串第i个位置的字符与其比较;
# 1.如有不同,则该位置的字符不相同,循环结束,返回当前res的值;
# 2.如果相同,res+当前位置的字符,继续往下一个位置比较
# flag是辅助标志位,用于判断所有字符串第i个位置的字符是否相同
tmp_str = strs[0][i]
flag = True
for str in strs:
if str[i] != tmp_str:
flag = False
break
if flag:
res += tmp_str
else:
break
return res
s = Solution()
print(s.longestCommonPrefix(["abca","abc","abca","abc","abcc"]))
print(s.longestCommonPrefix(["abc"]))
print(s.longestCommonPrefix(["abc", "", "ac"]))
解题思路:
1、获取字符串数组中每个字符串的长度,取最小值help_len,公共前缀最长长度即为此最小值,故循环比较help_len次即可;
2、循环过程:取第一个字符串的的第i个位置的字符,后续字符串第i个位置的字符与其比较;1.如有不同,则字符串该位置的字符不相同,循环结束,返回当前结果res的值;2.如果相同,res+当前位置的字符,继续往下一个位置比较;其中flag是辅助标志位,用于判断所有字符串第i个位置的字符是否相同;循环完成后,返回结果即可。
更多推荐


所有评论(0)