【leetcode】顛倒整數
阿新 • • 發佈:2018-12-26
給定一個範圍為 32 位 int 的整數,將其顛倒。
例 1:
輸入: 123
輸出: 321
例 2:
輸入: -123
輸出: -321
例 3:
輸入: 120
輸出: 21
注意:!!!
假設我們的環境只能處理 32 位 int 範圍內的整數。根據這個假設,如果顛倒後的結果超過這個範圍,則返回 0。
思路:
迴圈將個位十位。。。取出,然後乘以迴圈乘以10;難點在於判斷顛倒之後是否超出INT32的最大最小值。
#define MAX -((1<<(sizeof(int)*8-1))+1) #define MIN 1<<(sizeof ( int ) * 8 - 1) int reverse(int x) { int ret=0; while(x/10) { ret *=10; ret += x%10; x /=10; } if(x) { if(ret!=0 && MAX/abs(ret)<10) { return 0; } ret *=10; ret += x%10; } return ret; }