Leetcode练习记录一:20211215

Leetcode练习记录一:20211215

第一题:回文数(简单)

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number

思路:

较为简单的做法是,将这个正数先转为字符串,然后将该字符串逆序,判断逆序前与逆序后是否相等即可。

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        str_input = str(x)  # 将int转化为str
        str_mid = str_input[::-1]  # 将原字符串逆序
        res = False
        if str_input==str_mid:  # 比较逆序前后是否相同
            res = True
        return res

第二题:最长公共前缀(简单)

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

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

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix

思路:

由于在最理想的情况下,最长公共前缀为这个list中长度最短的那个字符串。因此这个最长公共前缀的长度不可能大于list中任意一个字符串的长度,故首先找到这个list所有字符串长度的最小值。

从第一位开始比较每个字符串各个位置对应的字符是否相同,如果所有字符串的该位置字符全部相同,则将该元素添加至结果数组;否则直接跳出循环,程序结束。

最后通过判断数组长度对应题目要求输出即可。

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        mid = []    # 存储结果数组
        res = ""   #存储最终结果
        min_length = len(strs[0])  # 记录所有字符串长度的最小值
        for i in range(1,len(strs)):
            mid_length = len(strs[i])
            if mid_length<=min_length:   # 更新最小值
                min_length = mid_length

        for i in range(min_length):   # 从每个字符串的第一个字符开始遍历判断
            mid_str = strs[0][i]   # 记录当前判断的字符
            flag = 1   # 结果判定的标识位
            for j in range(1,len(strs)):
                if strs[j][i]!=mid_str:    # 匹配不上,更改标识位,跳出当前内层循环
                    flag = 0
                    break
            if flag ==1:  # 当前字符匹配成功,加入结果数组
                mid.append(mid_str)
            if flag==0:   # 当前字段匹配失败,终止程序
                break
        if len(mid)>0:   # 根据题目要求正确输出对应格式
            res = "".join(mid)
        else:
            res = ""
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值