1. 程式人生 > >leetcode 7:反轉整數

leetcode 7:反轉整數

題目:反轉整數
- 題目面述:
給定一個32位有符號整數,將整數中的數字進行反轉。
例項1:

輸入:123
輸出:321

例項2:

輸入:-123
輸出:-321

注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
解法一:

[C++:]
static int x = []() { 
    std::ios::sync_with_stdio(false); 
    cin.tie(NULL);  
    return 0; 
}();
class
Solution {
public: int reverse(int x) { long int sum=0; if(x<0) { while(x) { sum=sum*10+x%10; x/=10; } } else{ x=-x; while(x) { sum=sum*10+x%10
; x/=10; } sum=-sum; } int flag=pow(2,32); if(sum>flag-1||sum<-flag) return 0; else return sum; } };

解法二:

class Solution {
public:
   #define INT_MAX 2147483647  
    #define INT_MIN (-INT_MAX - 1)  

    int
reverse(int x) { int flag = 1;//設定正負指示 if (x < 0){ flag = -1; x = -x; } int num = 0; while (x > 0){ if ((num != 0 && (INT_MAX / abs(num) < 10)) || ((unsigned int)abs(num * 10) + (unsigned int)(x % 10) > INT_MAX)){//溢位 return 0; } num = num * 10 + flag * (x % 10); x = x / 10; } return num; } };