题目要求:将整型数反转
例子:
输入:123
输出:321
输入:-456
输出:-654
- 解法
分析:这里可以不借助任何数据结构,采用求余的方法依次求出最后一位数pop,然后ans*10 + pop就可以计算出结果
注意:这里需要进行判断越界,如果越界就返回0
(1)java中int类型的范围
(2)越界判断
根据上图可知越界情况为:
ans >= MAX_VALUE/10 或者 ans <= MIN_VALUE/10
(3)代码
public static int reverseInt(int x) {
if(x == 0 )
return 0;
int answer = 0;
while(x != 0) {
int pop = x % 10;
x = x / 10;
// < > 成立的时候 一定会越界 == 成立的时候, 此时需要判断pop的大小
if(answer > Integer.MAX_VALUE/10 || answer == Integer.MAX_VALUE/10 && pop > 7) return 0;
if(answer < Integer.MIN_VALUE/10 || answer == Integer.MIN_VALUE/10 && pop < -8 ) return 0;
answer = answer * 10 + pop;
}
return answer;
}
时间复杂度:由于每次x变为原来的1/10倍,故时间复杂度大约为 log(n)