持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
1.描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
2.分析
选定列表中的第一个字符串,遍历其字符。将其每一个字符和其他字符串对应位置的字符进行比较,如果有一其它字符串在该位置没有字符或者字符不匹配,则退出所有循环,并返回结果,否则将当前字符添加到公共前缀中。
3.AC代码
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
public = ""
first_string = strs[0]
flag_1 = True
for i in range(len(first_string)):
# 判断是否退出循环
if not flag_1:
break
# 当前所比较的字符
current_char = first_string[i]
# 和其他字符串中的对应位置的字符进行比较
flag_2 = True
for string in strs[1:]:
# 如果另一字符串压根没有这么长或者对应位置字符不匹配,说明这个公共字符串的长度也就到头了,两个循环都可以结束了
if len(string) < i+1 or string[i] != current_char:
flag_1 = False
flag_2 = False
break
# 如果无事发生,所有比较都平稳进行下来了,那么就把当前字符加到公共字符串中
if flag_2:
public += current_char
return public
4.参考
C 小白 简单方法 (执行用时 : 4 ms内存消耗 : 7.1 MB) - 最长公共前缀 - 力扣(LeetCode)
执行用时: 0 ms , 在所有 C 提交中击败了 100.00% 的用户 内存消耗: 5.7 MB , 在所有 C 提交中击败了 72.62% 的用户 - 最长公共前缀 - 力扣(LeetCode)