【刷题】回文数

简介: 【刷题】回文数

题目描述


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

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

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


示例


示例 1:


输入:x = 121
输出:true

示例 2:


输入:x = -121
输出:false

解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。


示例 3:


输入:x = 10
输出:false

解释:从右向左读, 为 01 。因此它不是一个回文数。

 

提示:


-231 <= x <= 231 - 1


进阶:


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


解题思路


  1. 根据回文数的特点,我们可以知道负数或类似10、100、1000肯定不是回文数
  2. 我们可以利用反转比较的思路解题,也就是:反转后半部分的数字,和前半部分做比较
  3. 注意前半部分和后半部分刚好相等的情况(1221)或正好差一位的情况(121)


AC代码


func isPalindrome(x int) bool {
    // 如果是类似10、100、1000或者负数就直接返回false
    if x < 0 || (x != 0 && x %10 == 0) {
        return false
    }
    // 反转比较
    var right int
    for x > right{
        right = right*10 + x%10
        x /= 10
    }
    return x == right || x == right/10  
}


运行结果


微信图片_20221112161203.jpg


总结


“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。

相关文章
|
4月前
|
算法
LeetCode第9题回文数
该文章介绍了 LeetCode 第 9 题回文数的解法,通过分析回文数的特征,只需反转一半数字进行比较即可,时间复杂度可降至 O(n/2),并总结了该题与整数反转有关,需根据回文数特征来解决。
LeetCode第9题回文数
|
7月前
|
算法 C语言 C++
|
7月前
leetcode279完全平方数刷题打卡
leetcode279完全平方数刷题打卡
38 0
|
算法 索引
【LeetCode刷题1】两数之和
【LeetCode刷题1】两数之和
68 0
【LeetCode刷题1】两数之和
leetcode:9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
42 1
|
算法 Go
【刷题】两数之和
【刷题】两数之和
【刷题】两数之和
|
算法 Java 索引
《LeetCode刷题》—1.两数之和
《LeetCode刷题》—1.两数之和
107 0
《LeetCode刷题》—1.两数之和
|
索引
leetCode刷题 | 两数之和
leetCode刷题 | 两数之和
91 0