java整数翻转_LeetCode——7 Java之整数反转

题目:

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123

输出: 321

示例 2:

输入: -123

输出: -321

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

思路:可以把这个整数先取绝对值,然后转换为字符数组,逆序输出,判断输出后的值是否超出范围,若超出范围再做溢出处理,没有超出范围,如果输入的数是正数,就返回正数,如果输入的数是负数,逆序输出的值加上负号即可。此思路需要掌握的知识点:1.整数取绝对值,Math.abs(int);2.StringBuffer字符追加;3.整数转换为String类:String.valueOf(int);4.String类转换为char[]:char[] ch=s.toCharArray();5.StringBuffer类转换为String类:buf.toString();6.String类转换为int类型:Integer.parseInt(str);此时会出现NumberFormatException异常,所以记得抛出一下。6.另外,数值范围的表示,要知道怎么表示数字在 [−2^31,  2^31 − 1]它之间。

代码:

1 classSolution {2 public int reverse(intx) {3 StringBuffer buf=newStringBuffer();4 if(x>-2147483648||x<2147483647){5 int y=Math.abs(x);6 String s=String.valueOf(y);7 char[] ch=s.toCharArray();8 for(int i=ch.length-1;i>=0;i--){9 buf.append(ch[i]);10 }11 String str=buf.toString();12 try{13 int num=Integer.parseInt(str);14 if(x>=0)15 x=num;16 if(x<0)17 x=-num;18 returnx;19 }catch(NumberFormatException e){20 System.out.println("NumberFormatException!please input the integer again!");21 return 0;22 }23 }else{24 return 0;25 }26 }27 }

第二种方法:

数值如果超出范围就让它返回0,如果输入数值在整数范围内就通过求余和求商来计算。需要思考的点:1.数字范围表示:最大值:Integer.MAX_VALUE/10,最小值:Integer.MIN_VALUE。 2.%10求余,/10求商。

1 classSolution{2 public int reverse(intx){3 int rev=0;4 while(x!=0){5 int pop=x%10;6 x/=10;7 if(rev>Integer.MAX_VALUE/10||(rev==Integer.MAX_VALUE/10&&pop>7))8 return 0;9 if(rev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值