LeetCode——7 Java之整数反转

Posted xiayanjiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 class Solution {
 2     public int reverse(int x) {
 3         StringBuffer buf=new StringBuffer();
 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                 return x;
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 }

技术分享图片技术分享图片

 

以上是关于LeetCode——7 Java之整数反转的主要内容,如果未能解决你的问题,请参考以下文章

7. 整数反转(leetcode力扣算法 - java / rust)

7. 整数反转(leetcode力扣算法 - java / rust)

LeetCode 力扣7. Reverse Integer 整数反转 Java 解法

LeetCode 力扣7. Reverse Integer 整数反转 Java 解法

我用Java刷 leetcode 7. 整数反转

Leetcode 7. 整数反转-简单