欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode题目以及答案(5)

程序员文章站 2024-03-22 14:30:22
...

题目:编写一个函数来查找字符串数组中的最长公共前缀;如果不存在公共前缀,返回空字符串 ""

示例 1:

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

示例 2:

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

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

思路: (1)若字符列表中无,则输出空字符串。(2)找出字符列表中最短的字符,作为模板比较字符
(3)如果在首字母处不匹配,则输出无(无需匹配其他字符)(4)如果此字符与模板字符中一直匹配到第i个字母,则跳出这个循环,进行
下一个字符匹配。同时注意及时更新匹配到的最短字符串。
#!/usr/bin/env python
#encoding:utf-8

"""
__author__:adam
=================匹配若干字符串中最长的公共前缀============================

"""
class Solution(object):
    def longestCommonPrefix(self,strs):
        """
        :type strs:list[str]
        :rtype:str
        """
        if not strs:
            return ""
        else:
            #假设字符列表第一个字符是最短的字符串
            min_strs = strs[0]
            
            #利用for循环找出strs列表中最小的字符串
            for i in strs:
                
                #逐个进行长短比较
                if len(i) < len(min_strs):
                    min_strs = i

            #对字符列表进行一个循环比较
            for one_strs in strs:
                
                #对两个相同的字符串跳过
                if one_strs == min_strs:
                    continue

                #进行两个字符串之间的比较
                for i in range(len(min_strs)):

                    if one_strs[i] == min_strs[i]:
                        i += 1
                        
                    elif i == 0:
                        return 0
                    else:
                        min_strs = min_strs[:i]
                        #进行下一个字符的比较
                        break
            #全部比较完后返回
            return min_strs

list_zero = []
list_one = ["flower","flow","flight"]
list_two = ["dog","racecar","car"]


str_test = Solution()
print str_test.longestCommonPrefix(list_zero)
print str_test.longestCommonPrefix(list_one)
print str_test.longestCommonPrefix(list_two)
>>> 
=============== RESTART: C:/Users/20525/Desktop/min_strs.py ===============
fl
0
>>>


上一篇: 和为s的两个数字

下一篇: