一、整数反转
LC 07
// 解法1:
public int reverse(int x) {
long n = 0;
while(x != 0) {
n = n * 10 + x % 10;
x = x / 10;
}
return (int)n == n ? (int)n : 0;
}
// 解法2:
public class Reverse {
public int reverse(int x) {
StringBuilder sb = new StringBuilder();
long transfer = Math.abs((long) x);
// 将 long 变量 l 转换成字符串
String s = new StringBuilder(String.valueOf(transfer)).reverse().toString();
if (x < 0) {
sb.append('-');
}
String s1 = sb.append(s).toString();
long l = Long.parseLong(s1);
if (l > Math.pow(2, 31) - 1 || l < (-1) * Math.pow(2, 31)) {
return 0;
}
return Integer.parseInt(s1);
}
}
LC 09
回文数
// 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
// 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
// 方法:反转一半即可
class Solution {
public boolean isPalindrome(int x) {
if (x == 0) return true;
if (x < 0 || x % 10 == 0) return false;
int ret = 0;
while(x > ret) {
ret = ret * 10 + x % 10; // 121 1
x /= 10; // 121 12
}
return x == ret || x == ret / 10;
}
}