【刷题】回文数

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

春招打卡第10天第13篇。

勤学似春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。

掘金的活动真多哇,这个月决定每天用go刷题,一方面提升一下算法水平,另一方面沉淀一下go语言的学习。

Let’s GO!

题目描述

给你一个整数 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  
}
复制代码

运行结果

image.png

总结

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

来源说明

来源:力扣(LeetCode)

链接:leetcode-cn.com/problems/pa…

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

8e95dac1fd0b2b1ff51c08757667c47a.gif

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享