LeetCode每日一题之整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
思路
1、这道题要用到遍历、依次读取每个位数
2、这道题的解法将输入的数的每一位从右往左截取后,再从左往右拼接
3、每次循环实现一次截取与拼接
解法:
方法一:直接数值反序
class Solution {
public int reverse(int x){
int reverse =0;
while(x!=0){
if(reverse>Integer.MAX_VALUE/10||reverse<Integer.MIN_VALUE/10){
java中有内置的包,其中包含各种数据类型的取值范围
return 0;
}
int t=x%10;
x/=10;
每次循环将个位的数字用另外的变量承接,然后截取扔掉个位
reverse=reverse*10+t;
//反过来拼接上去
}
return reverse;
}
}
方法二:先转成字符串,然后调用字符串的反序方法,实现字符串反序,再转换成整型
1、实现整型转字符串的方法(基本数据类型int x)
String str =x+"";
//第一类,直接转化
String str =Integer.toString(x);
//第二类。调用Integer内置方法
2、实现整型转字符串的方法(Integer x 对象)
String str =String.valueOf(x);
//第一类,调用String的方法
String str =x.toString();
//第二类。调用toString
3、实现字符串转整型的方法
int x=Integer.parInt(String str);
Integer x=Integer.valueOf(String str);
1、实现字符串反转的方法(调用StringBuffer 对象)
StringBuffer sc=new StringBuffer(str);
sc.reverse();
//StringBuffer对象调用reverse方法,直接反转
int x1=Integer.parInt(String.valueOf(str));
//int x=Integer.parInt(String str),传入方法内的是String ,而不是StringBuffer,返回一个int值,而不是对象
//Integer.valueOf(String str) 返回的是Integer对象
2、实现字符串反转的方法(调用String的charAt()方法)
StringBuilder builder = new StringBuilder();
for (int i = str.length()-1; i >= 0; i--) {
builder.append(str.charAt(i));
}
完整版
public class Solution {
public int reserve(int x){
String str=Integer.toString(x);
StringBuilder sb = new StringBuilder(str);
sb.reverse();
int b= Integer.parseInt(String.valueOf(sb));
return b;
}
}