9. 回文数

一、题目原型:

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

二、题目意思剖析:

回文数可以看作一个对称的字符串。

输入: 121
输出: true

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

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

三、解题思路:

第一种思路:用数组将每个数字存起来,看是否对称

1.如果该整数为负数,就不是回文数。比如-123,反过来是321-,不管如何反都不是。
2.遍历将余数保存在一个数组里,然后遍历该数组,如果左右对称 --array[i] == array[array.count - 1 - i],就是回文数。否则不是。

func isPalindrome(_ x: Int) -> Bool {
    if x < 0 {
        return false
    }
    var remainder: Int = 0
    var tempX: Int = x
    var array: Array = Array.init(repeating: 0, count: 0)
    while tempX != 0  {
        remainder = tempX % 10
        tempX = tempX / 10
        array .append(remainder)
    }
    
    for i in 0..<array.count {
        
        if array[i] != array[array.count - 1 - i] {
            
            return false
        }
    }
    return true
}
第二种思路:将数字反序,然后对比和原整数是否相等

(推荐,耗时较少,少了一步遍历的时间)

func isPalindrome(_ x: Int) -> Bool {
    if x < 0 {
        return false
    }
    
    var tempX: Int = x
    var result: Int = 0
    while tempX != 0  {
        result = result * 10 + tempX % 10
        tempX = tempX / 10
    }
    
    if result != x {
        return false
    }
    return true
}

四、小结

如果是第一种方法大概是300ms,第二种大概是200ms。

总提交数
提交结果

有其他好的方法请极速留言,非常乐意一起探讨。😄
个人博客地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入:...
    zhyee_yan阅读 4,179评论 0 0
  • 内容 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入:...
    吃饭用盘装阅读 2,523评论 0 0
  • 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
    戴宏鹏阅读 1,382评论 0 0
  • 题目 思路1.排除特殊情况2.取回文数3.比较代码
    无名的殇阅读 1,400评论 0 0
  • 李花单纯 包不住心事 小嘴一张 噼里啪啦表白 桃花略显暧昧 小脸通红 面对桃色 不置可否 油菜花无所谓 不就点黄吗...
    听太阳升起阅读 1,652评论 1 1

友情链接更多精彩内容