题目

给你一个整数 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

问题分析

  • 121 是回文,因为从前往后和从后往前都一样。
  • -121 不是回文,因为负号不能出现在末尾。
  • 10 也不是回文,因为从前往后是 "10",但从后往前是 "01"。

思路

通过反转一半的数字来判断是否回文。

1、排除特殊情况:一开始排除一些特殊数字,比如负数肯定不是回文,另外如果一个不是0的整数的个位是0,它也不是回文(因为开头肯定不是0)。

2、逐步反转:从原始整数的最后一位(x%10)开始提取,放到新的整数reversedHalf的末尾(reversedHalf*10 + x%10),然后把这个数字从原整数中剔除(x /= 10)

3、停止条件:当原始整数剩余部分小于新的整数,说明已经反转了一半数字了

4、判断回文:如果是偶数个数,则两个数相等;如果是奇数个数,则 x 就等于 reversedHalf/10,忽略中间的数字。

复杂度

  • 时间复杂度: O(log n)
  • 空间复杂度: O(1)

代码实现


func isPalindrome(x int) bool {
if x < 0 || (x%10 == 0 && x != 0) {
return false
}
reversedHalf := 0
for x > reversedHalf {
reversedHalf = reversedHalf*10 + x%10
x /= 10
}
return x == reversedHalf || x == reversedHalf/10
}

20241106,LeetCode 每日一题,用 Go 实现整数回文数判断的更多相关文章

  1. leetcode isPalindrome (回文数判断)

    回文很简单,就是正着读和反着读一样,要判断一个数是否为回文数只需要判断正反两个是不是相等即可. 再往深了想一下,只需要判断从中间分开的两个数一个正读,一个反读相等即可. 代码: class Solut ...

  2. leetcode 1.回文数-(easy)

    2019.7.11leetcode刷题 难度 easy 题目名称 回文数 题目摘要 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 思路 一些一定不为回文数的 ...

  3. Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解

    Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全   Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...

  4. C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数

    各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 输出: 解释: 各位相加的过程为: + = , + = . 由于 是一位数,所以返回 . 进阶:你可以 ...

  5. leecode刷题(31) -- 回文数

    leecode刷题(31) -- 回文数 回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输 ...

  6. Java实现 LeetCode 9 回文数

    9. 回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false ...

  7. 【js】Leetcode每日一题-制作m束花所需的最少天数

    [js]Leetcode每日一题-制作m束花所需的最少天数 [题目描述] 给你一个整数数组 bloomDay,以及两个整数 m 和 k . 现需要制作 m 束花.制作花束时,需要使用花园中 相邻的 k ...

  8. 【JavaScript】Leetcode每日一题-在D天内送包裹的能力

    [JavaScript]Leetcode每日一题-在D天内送包裹的能力 [题目描述] 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i] ...

  9. 【js】Leetcode每日一题-完成所有工作的最短时间

    [js]Leetcode每日一题-完成所有工作的最短时间 [题目描述] 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间. 请你将这些工作分配给 k 位工人.所有工 ...

  10. 【js】Leetcode每日一题-数组异或操作

    [js]Leetcode每日一题-数组异或操作 [题目描述] 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == ...

随机推荐

  1. Popup弹出层滚动不流畅

    使用 Vant 框架中的 van-popup 组件(弹框组件);导致列表上下滑动不流畅 Popup 弹出层 滚动不流畅 <van-popup v-model="conFlag" ...

  2. 绕过 console-ban

    绕过 console-ban console-ban 项目介绍 console-ban 是一个高效且轻量级的 JavaScript 库,其核心功能是有效阻止用户通过浏览器的开发者工具(例如按 F12 ...

  3. 本地AI搭建

    搭建本地博客AI 目录 搭建本地博客AI 环境 下载ollama 选择模型 选择embedding模型 查看性能测试 选择合适的嵌入模型(Embedder) 估算内存 选择模型 量化类型介绍 Q5_0 ...

  4. 安川YASKAWA工业机器人板卡维修策略

    一.安川YASKAWA工业机器人板卡识别故障症状 首先,需要准确识别电路板故障的症状.这通常包括安川YASKAWA机器人操作不稳定.错误代码频繁出现.某些功能失效或整体性能下降等.通过仔细观察和诊断, ...

  5. 微信小程序实现分类菜单激活状态随列表滚动而自动切换效果详解

    这篇文章主要介绍了微信小程序分类菜单激活状态跟随列表滚动自动切换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧 目录 view结构 ...

  6. 职场软素质&算法工程师的硬素质--卓越的职场人需要的42种能力

    经过自己在实际的工作中摸爬滚打,个人觉得一些方面的能力是非常重要的,可以让自己在职场中快速的脱颖而出,因此,从硬实力,软实力两个方面进行总结如下: 软实力: (1)解决问题的能力 (2)预估风险的能力 ...

  7. 离线安装Docker社区版详细教程

    Docker是一个开源的应用容器引擎,使得开发者可以打包应用以及依赖包到一个轻量级的.可移植的容器中,然后发布到任何支持Docker的平台上.本文将详细介绍如何在离线环境下安装Docker社区版. 1 ...

  8. DW - 数据仓库原理

    2023年5月31日 01:13:14,刷B站的时候,刷到了李鹏程大佬的B站作品. 数据仓库的诞生原因 数据仓库的基本概述 数据仓库的特点 数据仓库 vs 数据库 MPP架构 vs 分布式架构 数据仓 ...

  9. 推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

    随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂.为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环.然而,传统的UI自动化测试工具往往存在学习成本高.维护困难等问题. ...

  10. python实现监控站点目录,记录每天更新内容,并写入操作日志,以便查找病毒恶意修改

    问题描述:站点需要追溯代码的修改时间,以便尽早发现病毒恶意修改迹象,及时处理 运行环境:linux服务器,宝塔面板 示例代码:一.读取txt的文件路径,依次遍历所有目录下面的文件,并记录文件信息 pa ...