14-->>python3

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

分析:这道题要求输出一个字符串的最长公共前缀。公共前缀的长度一定小于等于该数组中最字符串的长度,所以我们需要找到数组中长度最短的字符串当作参照物去寻找前缀。可以将数组的第一个单词作为临时参照(minsub),遍历数组,遇到比它长度更小的,就更新 minsub 的值。接下来,我们就可以根据minsub匹配数组中每一个单词,看是否存在公共前缀:接着进行遍历,当遇到和minsub不同的字符串时,用循环匹配这两个字符串中是否存在相同字符(好像不是很清楚...配合看代码就好理解了),如果存在,就记录相同字符结束的下标;如果不存在,就进行下一个字符串的匹配。

 1 class Solution:
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if not strs:
 8             return ""
 9         else :
10             minsub=strs[0]
11             for sub in strs:
12                 if len(sub)<len(minsub):
13                     minsub=sub
14             for sub in strs:
15                 if sub==minsub:
16                     continue
17                 for i in range (len(minsub)):
18                     if sub[i]==minsub[i]:
19                         i=i+1
20                     elif i==0:
21                         return ""
22                     else:
23                         minsub=minsub[:i]
24                         break
25             return minsub

   

猜你喜欢

转载自www.cnblogs.com/baiqingm/p/9281362.html