leetcode第7题
题目描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路一:
因为要求是在[-2^31 , 2^31 -1],所以需要进行判断是否溢出。若果溢出的话直接一手return 0; 利用%10取末尾余数进行循环,然后在用*10将数字排序反转。
class Solution {
public int reverse(int x) {
int res = 0;
while(x!=0) {
//每次取末尾数字
int tmp = x%10;
//判断是否 大于 最大32位整数
if (res>214748364 || (res==214748364 && tmp>7)) {
return 0;
}
//判断是否 小于 最小32位整数
if (res<-214748364 || (res==-214748364 && tmp<-8)) {
return 0;
}
res = res*10 + tmp;
x /= 10;
}
return res;
}
}
思路二:
与思路一大致相同,不过引入了Integer。
class Solution {
public int reverse(int x) {
int ans = 0;
while(x != 0){
int pop = (x % 10);
if(ans > Integer.MAX_VALUE / 10 || (ans == Integer.MAX_VALUE && pop>7)){
return 0;
}
if(ans < Integer.MIN_VALUE / 10 || (ans == Integer.MIN_VALUE / 10 && pop<-8)){
return 0;
}
ans = ans * 10 + pop;
x /= 10;
}
return ans;
}
}
关于Integer(咱也是才学会没多久的人):
Integer 类在对象中包装了一个基本类型int的值。Integer类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了其他一些处理int类型时非常有用的常量和方法。
1.Integer(int number)
该方法以一个int型变量作为参数来获取Integer对象。
例:
Intrger number = new Integer(7);
2.Integer(String str)
该方法以一个String型变量作为参数来获取Integer对象。
例:
Intrger number = new Integer(“45”);
除了表里的还能parseInt()将str转int,toString()、toBinaryString()、toHexString()和toOctalString()转换为十、二、十六、八进制。
上述代码中用到的MAX_VALUE表示int类型最大取值范围,MIN_VALUE则表示int类型最小取值范围。
真啥也不会萌新一个,还请各位大佬多多指教(渴望知识的眼神)