leetcode-4.23[7. 整数反转、9. 回文数、13. 罗马数字转整数](python解法)

题目1

在这里插入图片描述

题解1

class Solution:
    def reverse(self, x: int) -> int:
        num, res = abs(x), 0
        of = (1 << 31) - 1 if x > 0 else 1 << 31
        # 初始一个值存最终结果,每次取出num,取出最小位上的值并把前面一位乘10
        while num != 0:
            res = res * 10 + num % 10
            if res > of: return 0
            num //= 10
        return res if x > 0 else -res

题目2

在这里插入图片描述

题解2

# class Solution:
#     def isPalindrome(self, x: int) -> bool:
#         if x < 0:
#             return False
#         num = []
#         y = x
#         while y:
#             num.append(y%10)
#             y //= 10
#         sum_num = 0
#         for i in num:
#             sum_num = sum_num*10 + i
#         return x== sum_num
            
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        cur, num = 0, x
        # 每次num //= 10之后拿出最后一个数
        while num != 0:
            cur = cur*10 + num%10
            num //= 10
        
        return cur == x

题目3

在这里插入图片描述

题解3

class Solution:
    def romanToInt(self, s: str) -> int:
        Rome = {"I": 1,"V":5, "X":10, "L":50, "C":100, "D":500,"M":1000}
        res = 0
        for i in range(len(s)):
            if i+1 < len(s) and Rome[s[i]] < Rome[s[i+1]] :
                res -= Rome[s[i]]
            else:
                res += Rome[s[i]]
        return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值