豫ICP备17040950号-2

leetcode刷题记录007-Reverse Integer

文章目录
  1. 1. 题目
  2. 2. 解题过程
    1. 2.1. 第一次思路
    2. 2.2. 第二次思路
  3. 3. 源码地址

题目

题目链接:https://leetcode.com/problems/reverse-integer/

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

解题过程

第一次思路

1、循环内x不断除以10,直到变成0,跳出循环。
2、循环内x不断除以10求余,并把求得的余数添加到结果字符串上。
3、强制转换结果字符串为int类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Solution {
public int reverse(int x) {
String resultStr = "";
if(x==0){
resultStr = "0";
}else if(x>0){
do{
resultStr = resultStr + x%10 ;
x = x/10;
if(x>=1 && x<= 9){
resultStr = resultStr + x%10 ;
}
}while(x/10 !=0 );
}else{
x=-x;
do{
resultStr = resultStr + x%10 ;
x = x/10;
if(x>=1 && x<= 9){
resultStr = resultStr + x%10 ;
}
}while(x/10 !=0 );
resultStr = "-"+resultStr;
}
return Integer.parseInt(resultStr);
}
}

报错Line 26: java.lang.NumberFormatException: For input string: “9646324351”。

第二次思路

单击click to show spoilers.,发现还需要处理int溢出的问题。
那就加上int超出范围的错误处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Solution {
public int reverse(int x) {
String resultStr = "";
if(x==0){
resultStr = "0";
}else if(x>0){
do{
resultStr = resultStr + x%10 ;
x = x/10;
if(x>=1 && x<= 9){
resultStr = resultStr + x%10 ;
}
}while(x/10 !=0 );
}else{
x=-x;
do{
resultStr = resultStr + x%10 ;
x = x/10;
if(x>=1 && x<= 9){
resultStr = resultStr + x%10 ;
}
}while(x/10 !=0 );
resultStr = "-"+resultStr;
}
try {
return Integer.parseInt(resultStr);
} catch (Exception e) {
return 0;
}

}
}

Accepted。

源码地址

https://github.com/voidking/leetcode/tree/master/src/com/voidking/leetcode/question007