7. Reverse Integer

My Solution (StringBuilder)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int reverse(int x) {
String str = String.valueOf(x);
StringBuilder sb = new StringBuilder();
int end = 0;
if(str.charAt(0) == '-') {
end++;
sb.append('-');
}
for(int pos = str.length() - 1; pos >= end; pos--){
sb.append(str.charAt(pos));
}
try {
int number = Integer.parseInt(sb.toString());
return number;
} catch (NumberFormatException e) {
return 0;
}


}
}

Remarks:

  1. Be careful of int boundary; use try and catch to hold big numbers error.
  2. Java get char: str.valueOf(num);
  3. Java convert to string: String.valueOf(x)
  4. Java convert to int: Integer.parseInt(str)
  5. TC: $O(n)$

Math

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (
rev > Integer.MAX_VALUE / 10 ||
(rev == Integer.MAX_VALUE / 10 && pop > 7)
) return 0;
if (
rev < Integer.MIN_VALUE / 10 ||
(rev == Integer.MIN_VALUE / 10 && pop < -8)
) return 0;
rev = rev * 10 + pop;
}
return rev;
}
}

Remarks:

  1. Be careful of int boundary; check before x10: compare rev and Integer.MAX_VALUE/10.
  2. TC: $O(\log(x))$