题目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