9. 回文数

image.png

将整数转换为字符串再对比

执行耗时:12 ms,击败了34.65% 的Java用户 内存消耗:37.9 MB,击败了41.87% 的Java用户

  1. class Solution {
  2. public boolean isPalindrome(int x) {
  3. // 如果小于0,直接返回 false
  4. if (x < 0) return false;
  5. // 将整数转换为字符串
  6. String s = String.valueOf(x);
  7. // 将字符串转换为 char 数组
  8. char[] chars = s.toCharArray();
  9. // 遍历 char 数组对比
  10. for (int i = 0; i < chars.length / 2; i++) {
  11. if (chars[i] != chars[chars.length - 1 - i]) {
  12. return false;
  13. }
  14. }
  15. return true;
  16. }
  17. }

将整数转换为字符串,调用反转字符串 api

执行耗时:16 ms,击败了13.91% 的Java用户 内存消耗:38.3 MB,击败了13.46% 的Java用户

  1. class Solution {
  2. public boolean isPalindrome(int x) {
  3. StringBuilder stringBuilder = new StringBuilder(String.valueOf(x));
  4. return stringBuilder.toString().equals(stringBuilder.reverse().toString());
  5. }
  6. }

数学解法

执行用时:5 ms, 在所有 Java 提交中击败了74.53%的用户 内存消耗:40.9 MB, 在所有 Java 提交中击败了24.24%的用户

  1. class Solution {
  2. public boolean isPalindrome(int x) {
  3. if (x < 0) return false;
  4. int div = 1;
  5. while (x / div >= 10) {
  6. div *= 10;
  7. }
  8. while (x > 0) {
  9. int left = x / div;
  10. int right = x % 10;
  11. if (left != right) return false;
  12. x = (x % div) / 10;
  13. div /= 100;
  14. }
  15. return true;
  16. }
  17. }