【刷题笔记】9. 回文数

236 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

一、题目描述:

9. 回文数 - 力扣(LeetCode) (leetcode-cn.com)

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是。

示例 1:

输入: x = 121
输出: true

示例 2:

输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: x = 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

提示:

  • -2^31 <= x <= 2^31 - 1

进阶: 你能不将整数转为字符串来解决这个问题吗?

二、思路分析:

后面好多题目都涉及回文数,这里没有说不能转为字符串,因此先写一个转为字符串的解法 首先是判断数是否小于零,如果是负数则一定不是回文数

接着将int类型的数转为字符串
通过定义两个指针,来指向头尾两个数进行比较
如果相等,头指针++ 尾指针--
如果不等直接返回false
while结束条件为first>=last时,调出循环,返回一个true即可

三、AC 代码:

class Solution {
    public boolean isPalindrome(int x) {
        if(x<0){
            return false;
        }

        String s=String.valueOf(x);
        int first=0;
        int last=s.length()-1;
        while(first<last){
            if(s.charAt(first)==s.charAt(last)){
                first++;
                last--;
            }else{
                return false;
            }
            
        }
        return true; 

    }
}

范文参考:

动画:回文数的三种解法 | 法解种三的数文回:画动 - 回文数 - 力扣(LeetCode)

根据示例可知,如果为负数,肯定不是回文数,所以当x<0时,直接返回false就可以。如果大于0,那么定义一个变量,把取模10,把最后一位数直到第一位数取出来,颠倒顺序,赋给变量,最后让变量和x相减等于0则相等,反之false - 回文数 - 力扣(LeetCode)