題目1
【簡單】整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123 輸出: 321
示例 2:
輸入: -123 輸出: -321
示例 3:
輸入: 120 輸出: 21
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
解答
方法1:算術
注意:反轉後的值可能會溢出;使用 python 區摸需要考慮 負數情況
class Solution(object):
def reverse(self, x):
ans = 0
flag = 1
if x <0:
x = -x;
flag = -flag
while x != 0:
cur = x % 10
ans = ans*10 + cur
x //= 10
return ans*flag if -2**31 <ans*flag <2**31 else 0
鏈接:https://leetcode-cn.com/problems/reverse-integer/solution/suan-shu-javapython-by-javaniuniu/
方法2: 轉String再反轉
class Solution:
def reverse(self, x: int) -> int:
# 這裏是把整數轉換成字符串進行處理的,有點投機取巧了
str_x = str(x)
if str_x[0] == '-':
str_x = str_x[::-1]# 字符串反轉
str_x = '-'+str_x[:-1]# 捨棄字符串最後一位,前面接上'-'
else:
str_x = str_x[::-1]
result = int(str_x) # 再把字符串轉爲有符號整數
if result > -2**31 and result < 2**31-1:
return result
else:
return 0
鏈接:https://leetcode-cn.com/problems/reverse-integer
題目2
【簡單】反轉字符串II
給定一個字符串 s 和一個整數 k,你需要對從字符串開頭算起的每隔 2k 個字符的前 k 個字符進行反轉。
如果剩餘字符少於 k 個,則將剩餘字符全部反轉。
如果剩餘字符小於 2k 但大於或等於 k 個,則反轉前 k 個字符,其餘字符保持原樣。
示例:
輸入: s = "abcdefg", k = 2 輸出: "bacdfeg"
鏈接:https://leetcode-cn.com/problems/reverse-string-ii/
解答
class Solution:
def reverseStr(self, s: str, k: int) -> str:
a = list(s)
for i in range(0, len(a), 2*k):
a[i:i+k] = reversed(a[i:i+k])
return "".join(a)