前言📢📢
Python每日一练来啦,本文已收录于:《Python每日一练》专栏
此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,持续更新中,欢迎免费订阅!!!
*
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. 算法思路
-
公共前缀的长度不会超过最短字符串的长度
-
公共前缀是所有字符串的公共部分,不是某两个字符串的
-
一旦某个位置字符不匹配,搜索就可以终止
4. 代码实现
python
from typing import List
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
# 以第一个字符串作为初始前缀
prefix = strs[0]
# 与后续每个字符串比较
for i in range(1, len(strs)):
# 不断缩短前缀,直到找到当前字符串的前缀
while strs[i].find(prefix) != 0:
prefix = prefix[:-1]
if not prefix:
return ""
return prefix
if __name__ == '__main__':
print(Solution().longestCommonPrefix(["flower","flow","flight"]))