LeetCode_0007_整数の反転
0007整数反転
タイトルリンク:https://leetcode-cn.com/problems/reverse-integer/
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.
例1:
入力:123出力:321
例2:
入力:-123出力:-321
例3:
入力:120出力:21
注意:
我々の環境では32ビットの符号付き整数しか記憶できないと仮定すると,[−2 31−2^{31}−231,2 31−1 2^{31}−1 231−1の数値範囲である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
解法
タイトルリンク:https://leetcode-cn.com/problems/reverse-integer/
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.
例1:
入力:123出力:321
例2:
入力:-123出力:-321
例3:
入力:120出力:21
注意:
我々の環境では32ビットの符号付き整数しか記憶できないと仮定すると,[−2 31−2^{31}−231,2 31−1 2^{31}−1 231−1の数値範囲である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
解法
int reverse(int x) {
//INT_MIN , , 0
if (x == INT_MIN) return 0;
// tmp ,flag ,0 1
int tmp = 0, flag = 0;
if (x < 0)
{
x = -x;
flag = 1;
}
while (x != 0)
{
tmp = tmp * 10 + (x % 10);
if(tmp > INT_MAX / 10 && x >= 10) return 0;
x /= 10;
}
if (tmp < 0) return 0;
if (flag == 1) return -tmp;
else return tmp;
}