【LeetCode刷题】14 最长公共前缀 || 58 最后一个单词长度

本文详细解析了两个经典算法问题:寻找字符串数组中的最长公共前缀及计算字符串中最后一个单词的长度。通过具体示例和代码实现,阐述了算法的设计思路和执行流程。

14、最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”

示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。

class Solution(object):
    def longestCommonPrefix(self, strs):
        result = ''

        if len(strs) > 0:
            for i, each in enumerate(strs[0]):
                for string in strs[1:]:
                    if i < len(string) and each == string[i]:
                        continue
                    else:
                        return result
                result += each
            return result
        else:
            return result
# longest-common-prefix
class Solution(object):

    def longestCommonPrefix(self, strs):
        if len(strs) == 0 or strs[0] == '':
            return ''
        if len(strs) == 1:
            return strs[0]
        m = min([len(x) for x in strs])
        # m = len(min(strs))
        for j in range(m):  #数组中最短的字符串长度
         #从第二个字符串开始判断第1-m个元素是否与第一个的相同,不同则记录下来
            for i in range(1, len(strs)):  
                if strs[0][j] != strs[i][j]:
                    return strs[0][:j]
        return strs[0][:m]


if __name__ == '__main__':
    print(Solution().longestCommonPrefix(["abca", "aba", "aaab"]))

58、最后一个单词的长度

给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:
输入: “Hello World”
输出: 5

class Solution(object):
    def lengthOfLastWord(self, s):

        # 方法一:

        # s1 = list(s)
        # s2 = s.split()
        # if s1[-1] ==' ':
        #     return 0
        # else:
        #     return len(s2[-1])

        #方法二

        count = 0
        for i in s[::-1]:
            if i == ' ' and count != 0:
                return count
            elif i != ' ':
                count += 1
        return count

#一个一个字符判断,如果是空字符并且前边累计n个字符,则这n个字符长度就是单词长度

print(Solution().lengthOfLastWord("hello world"))

总结

在循环的过程中,我们引入条件判断语句吗,如果满足了某种情况,则我们返回一个值,通常我们判断的是不符合一种情况,最后在循环外返回全部符合情况下的值(或者相反)!

m = min([len(x) for x in strs])
#求字符串数组最小长度的元素
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeremy-Sky

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值