题目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
题意:
反向整数的位数。
思路一:
将整数由低位到高位取出,再构成整数,用一个long long类型的整数存储转换之后的值来存储转换之后过大的值,之后对转换后的值进行判断是否溢出,溢出返回0;
代码:12ms
class Solution { public: int reverse(int x) { long long res = 0; for(; x; x/=10){ res = res*10 + x%10; } return (res<INT_MIN || res>INT_MAX) ? 0 : res; } };
思路二:
对每一次的数进行溢出判断,如果翻转之后的整数大于最大数,则返回0;
代码:10ms
class Solution { public: int reverse(int x) { int flag = x>0 ? 1 : -1; int res = 0; x = x>0 ? x : -x; while(x>0){ if((2147483647.0-x%10)/10<res) return 0; res = res*10 + x%10; x = x/10; } return res*flag; } };