「LeetCode」9-回文数

126 阅读1分钟

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

一.题目:

9. 回文数 给你一个整数 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

二、思路分析:

这是力扣的一道非常简单的题目,用到的只是也是非常经典,我们先来看题目,题目要求我们判断一个整数是否为回文数,即从左到右的顺序跟从右到左都是一样的整数,他们完全相等,而示例中表明了负数不是回文数,我们可以根据这一点来直接跳过负数的测试用例。题目解答的基本流程为:

  • 首先将输入的数进行判断,如果输入数是一个负数,直接返回false代表不是回文数。
  • 将数字转化为字符串,便于利用双指针进行回文数的判断,创建两个变量分别指向字符串的开始和末尾。
  • 在循环中每次都要比对两个指针指向的字符是否相等,如果不相等直接返回false结束循环,如果符合则需要一直循环至条件结束才证明是回文数。

三、代码:

function isPalindrome(x: number): boolean {
    if(x < 0) return false;
    const s = x.toString();
    let start = 0, end = s.length -1;
    while(start < end){
        if(s[start] !== s[end])return false;
        start++;
        end--;
    }
    return true;
};

四、总结:

这道题目的思路很简单,就是利用双指针进行回文数的判断,其核心在与将数字转化为字符串以及利用双指针的移动判断是否符合条件。