Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
思路
这是一次失败的尝试。考虑的情况太多,以至于没有好好地去整合。
必须注意的是,我们需要考虑如果翻转 100 这个数,最后的结果是怎么样的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ if (x != 0): isNegative = False if (x < 0): x = -x isNegative = True res = [] while (x > 0): res.append(x % 10) x = x / 10 while (res[0] == 0): del res[0] length = len(res) if (length): ans = 0 for i in range(length): ans += res[-(i+1)] * ( 10 ** i ) if (isNegative): ans = -ans if (ans < -2 ** 31 or ans > 2 ** 31 - 1): return 0 else: return ans else: return 0
|
最后,可以参考一下示例代码,不需要这么多判断分支,也能完成这道题。
https://discuss.leetcode.com/topic/6005/shortest-code-possible-in-c
1 2 3 4 5 6 7 8 9 10 11
| class Solution { public: int reverse(int x) { long long res = 0; while(x) { res = res*10 + x%10; x /= 10; } return (res<INT_MIN || res>INT_MAX) ? 0 : res; } };
|