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=sub14             for sub in strs:15                 if sub==minsub:16                     continue17                 for i in range (len(minsub)):18                     if sub[i]==minsub[i]:19                         i=i+120                     elif i==0:21                         return ""22                     else:23                         minsub=minsub[:i]24                         break25             return minsub

   

14-->>python3

评论关闭