python 多列表交集處理和sorted函式字串列表排序問題
阿新 • • 發佈:2021-02-06
一、題目描述
給你一個 32 位的有符號整數 x ,返回 x 中每位上的數字反轉後的結果。
如果反轉後整數超過 32 位的有符號整數的範圍[−231,231− 1] ,就返回 0。
假設環境不允許儲存 64 位整數(有符號或無符號)。
二、示例
示例 1:
輸入:x = 123
輸出:321
示例 2:
輸入:x = -123
輸出:-321
示例 3:
輸入:x = 120
輸出:21
示例 4:
輸入:x = 0
輸出:0
三、輸入輸出說明
四、基本思路
對於沒有大小限制的整數反轉的一般思路:(設原數為source,反轉之後的數為destination)
1)每次將source對10取餘
2)得到的餘數x加到10倍destination上,此操作相當於將destination在十進位制上向左移一位
3)將source除以10,此操作相當於將source在十進位制上向右移一位
4)終止條件為source == 0
由於整數除法是向下整除,所以對於負數也適用
由於本題加了限制“如果反轉後整數超過 32 位的有符號整數的範圍[−231,231− 1] ,就返回 0”,所以每次在步驟2)中需要判斷此時的destination是否超過最大值除以10
五、程式碼
int reverse(int x){ int maxn = pow(2, 31) - 1; int minn = pow(-2, 31); int ans = 0; while (x != 0) { if (x > 0 && ans > maxn/10 || x < 0 && ans < minn/10) { return 0; } else { ans = ans * 10 + x % 10; x /= 10; } } return ans; }