7. Reverse Integer
题目:将输入整数逆序输出,保持正负号不变
思路:将负数先变正数(取反加1),进行统一处理,新建long类型变量,将输入整数的每一位(%10)加到该变量,每循环一次该变量*10,同时判断该变量是否大于Integer.MAX_VALUE或小于Integer.MIN_VALUE(判断是否溢出),是则返回零。最后输入大于零直接输出该变量,否则取反加1输出。需要注意最后一位也要加。
public class Solution {
public int reverse(int x) {
if(x == 0){
return 0;
}
int temp = x;
long ret = 0;
if(x < 0) temp = ~temp + 1;
while(temp/10 != 0){
ret = ret*10 + temp%10;
if(ret > Integer.MAX_VALUE || ret < Integer.MIN_VALUE) return 0;
temp /= 10;
}
ret = ret*10 + temp%10;
if(ret > Integer.MAX_VALUE || ret < Integer.MIN_VALUE) return 0;
if(x < 0) return ~(int)ret + 1;
return (int)ret;
}
}
看下别人的解答,发现取反这步多余,可以去掉。
8. String to Integer (atoi)
题目:字符串转整型
思路:暂时不想做QAQ