本文主要是介绍10.最长公共前缀-Leetcode 014(python),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
- 示例
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
- 解决方案一
首先找出字符串数组中最短的字符串长度minl,这也是最长公共前缀可以取到的最大值;然后开始依次遍历字符串数组,判断每一个字符串的前minl个字符是否一样,思路是从下标0开始,如果前边的字符不一样,那么后边的字符也就不用再判断了。
- 代码一
class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if not strs:return ""if len(strs) == 1:return strs[0] #找出最短的字符串长度minlminl = min([len(x) for x in strs])#遍历每一个字符串的前min1个字符end = 0while end < minl:for i in range(1,len(strs)):#如果当前字符串的第end个字符和它前一个字符串的第end个字符不一样,那么就不再进行后边的判断,最长公共前缀的长度为endif strs[i][end] != strs[i-1][end]:return strs[0][:end]end += 1return strs[0][:end]
- 解决方案二
字符串比较大小值时是按照ACII码来排序的,比如min(['a', 'abc', 'ae'])为'a',max(['a', 'abc', 'ae'])为'ae'所以只需比较字符串数组中的最大值和最小值即可。
- 代码二
class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""# 如果strs为空, 返回空字符串;if not strs: return ''# 找最长公共前缀, 只需对比最长的字符串和最短字符串;s1 = min(strs)s2 = max(strs)for i, c in enumerate(s1):if c != s2[i]:return s1[:i]return s1
这篇关于10.最长公共前缀-Leetcode 014(python)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!