【leetcode】(python) 14. Longest Common Prefix最长公共前缀

Description

  1. Longest Common Prefix Easy

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string “”.

Example

  • Example 1:
Input: ["flower","flow","flight"]
Output: "fl"
  • Example 2:
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
  • Note:

All given inputs are in lowercase letters a-z.

题意

求数组字符串中的最长公共前缀LSP,没有则返回""

解题思路1

从数组第一个字符串开始,扫描该字符串,依次检查其他字符串的同一位置是否是一样的字符,当遇到不一样时则返回当前得到的前缀。

code

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        res = ""
        for i in range(len(strs[0])):
            for j in range(1, len(strs)):
                if i>=len(strs[j]) or strs[j][i]!=strs[0][i]:
                    return res
            res += strs[0][i]
        return res

解题思路2

跟思路1差不多,只不过先将字符串数组排序(这里排序应该是按字符串大小来比较的,先比较首字母,首字母相同则继续往后比较,比如’ab’,‘ac’是’ac’大于’ab’,不同则首字母大的字符串大,比如’ab’,‘ba’,就是’ba’大于’ab’),然后直接比较第一个和最后一个的字符串即可。

code

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""
        strs.sort()
        print(strs)
        res = ""
        for i in range(len(strs[0])):
            if i>=len(strs[-1]) or strs[-1][i]!=strs[0][i]:
                return res
            res += strs[0][i]
        return res

今天雨天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值