9. 回文数
将整数转换为字符串再对比
执行耗时:12 ms,击败了34.65% 的Java用户 内存消耗:37.9 MB,击败了41.87% 的Java用户
class Solution {
public boolean isPalindrome(int x) {
// 如果小于0,直接返回 false
if (x < 0) return false;
// 将整数转换为字符串
String s = String.valueOf(x);
// 将字符串转换为 char 数组
char[] chars = s.toCharArray();
// 遍历 char 数组对比
for (int i = 0; i < chars.length / 2; i++) {
if (chars[i] != chars[chars.length - 1 - i]) {
return false;
}
}
return true;
}
}
将整数转换为字符串,调用反转字符串 api
执行耗时:16 ms,击败了13.91% 的Java用户 内存消耗:38.3 MB,击败了13.46% 的Java用户
class Solution {
public boolean isPalindrome(int x) {
StringBuilder stringBuilder = new StringBuilder(String.valueOf(x));
return stringBuilder.toString().equals(stringBuilder.reverse().toString());
}
}
数学解法
执行用时:5 ms, 在所有 Java 提交中击败了74.53%的用户 内存消耗:40.9 MB, 在所有 Java 提交中击败了24.24%的用户
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
int div = 1;
while (x / div >= 10) {
div *= 10;
}
while (x > 0) {
int left = x / div;
int right = x % 10;
if (left != right) return false;
x = (x % div) / 10;
div /= 100;
}
return true;
}
}