【题目描述】
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
【解答】
- 解法一:一开始先假设最长公共前缀 result = strs[0],然后依次与列表里其他的字符串比较,不断更新 result 的值,直到 result = ‘‘ 或者遍历完列表里的全部字符串
def longestCommonPrefix(strs): if not strs : return ‘‘ #如果strs为空 if len(strs) == 1: return strs[0] #如果strs中只有一个字符串 if ‘‘ in strs: return ‘‘ #如果strs里存在 ‘‘ result = strs[0] #用resul表示当前求得的最长公共前缀 strslen = len(strs) i = 1 while result and i < strslen: m = len(result) n = len(strs[i]) minlen = min(m,n) result = result[:minlen] #result长度一定小于或等于当前字符串 for j in range(minlen): if result[j] != strs[i][j]: result = result[:j] break i += 1 return result
执行用时:46ms
- 解法二:利用python列表的排序功能
python中如果全是由字符串组成的列表,对其进行排序,会按照a-z进行排序(就像查英语字典一样,单词按照字母顺序排列)所以可以很方便的进行判断最长公共前缀
def longestCommonPrefix(self, strs: List[str]) -> str: if len(strs)==0: #判断输入是否为空 return ‘‘ if len(strs)==1: #若列表长度为1,直接返回strs[0] return strs[0] if ‘‘ in strs: #若列表里含有‘‘,直接返回‘‘ return ‘‘ result=‘‘ strs.sort() #将字符串数组排序 for i in range(len(strs[0])): if i< len(strs[-1]) and strs[0][i]==strs[-1][i]: result+=strs[0][i] else: break return result
执行用时:54ms
原文地址:https://www.cnblogs.com/xxx1206/p/11958536.html
时间: 2024-10-09 19:09:22