LeetCode-9 回文数

【简单】力扣算法题解析LeetCode9:回文数 本文介绍了一种高效判断整数是否为回文数的方法。通过反转数字的后半部分并与前半部分比较,避免了完全反转可能导致的溢出问题。算法首先排除负数和末尾为零的非零数,然后在循环中逐步反转后半数字,最后比较前半部分与反转结果(或反转结果/10,针对奇数位)。该方法的时间复杂度为O(log₁₀n),空间复杂度为O(1),适合处理大整数。Java实现代码简洁,测试案例验证了其正确性。 阅读详情
  • 题目:9. 回文数
  • 难度:简单
  • 分类:字符串、数学
  • 解决方案:双指针、整数取余

今天我们学习第9题回文数,这是一个关于数学的简单题,这个题目比较简单,最好能手写出该题。下面我们看看这道题的题目描述。

题目描述

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

示例 1:

输入: 121
输出: true

示例 2:

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

示例 3:

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

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

分析

看完这个题目,对于回文数我们应该不陌生。我们在LeetCode-5 最长回文子串中介绍过回文串,即从左向右读和从右向左读的结果是一样的字符串。本题是判断一个整数是否为一个回文数,最简单的做法是先将这个整数转化为字符串,然后使用双指针的方式判断这个字符串是否为回文串。
具体java代码如下所示:

public boolean isPalindrome(int x) {

    // 将整数转化为字符数组
    char[] str = String.valueOf(x).toCharArray();
    // 创建左右指针
    int left = 0, right = str.length-1;
    // 遍历字符串
    while(left < right){
        // 如果左指针指向的字符与右指针指向的字符不同时,直接返回false
        if (str[left] != str[right])
            return false;
        left++;		// 左指针向右移动
        right--;	// 右指针向左移动
    }

    return true;
}

图1.回文字符串提交结果

将整数转化为字符串后这个题目的思路就很清晰了。注意看进阶部分的提示:你能不将整数转为字符串来解决这个问题吗? 因此我们需要换一种思路来解决这个题目。
我们想一想整数如果是负数,则直接返回false,如示例2中可以知道一个负数不可能为回文数。由于整数不可能为0开头(除整数0外),因此整数的个位数为0也直接返回false,如示例3所示。排除完这两种特殊情况后,我们该如何判断剩下的整数是不是回文数呢?要判断一个数是否为回文数,则需要判断前半段和后半段是否对称,我们将后半段部分的数字翻转一下,然后判断翻转后的数字是否与前半部分的数字是否相等即可。我们可以将整数对10取余得到整数的个位数。由于数字位数为奇数个和偶数个的情况不一样,我们通过两个实例分析,如下图2所示。
图2.整数翻转实例

通过分析之后,具体代码就不难实现了。java代码如下所示:

public boolean isPalindrome(int x) {

    // 排除负数和以0结尾的整数(除0以外)
    if ((x < 0) || (x % 10 == 0 && x != 0 ))
        return false;

    int reverNum = 0;
    // 翻转整数过程
    while (x > reverNum){
        reverNum = reverNum * 10 + x % 10;  // 计算翻转数字
        x /= 10;                            // 计算剩余数字
    }

    return reverNum == x || reverNum / 10 == x; // reverNum == x为整数位数偶数个时的判断条件;reverNum / 10 == x为整数位数奇数个时的判断条件

}

图3.回文数提交结果

Github地址

LeetCode-9 回文数

参考链接

9.回文数

在这里插入图片描述

更多文章请见:www.jacob2359.com或添加公众号:算法半岛(扫描上图二维码即可关注)

让Claude连续写代码24小时会发生什么?揭秘长时运行”架构背后的工程逻辑与未来 AI长时运行实验揭示软件开发新范式 Claude Opus通过Harness框架24小时独立开发全栈应用的成功实验,展示了AI从辅助工具向异步协作者的进化。实验采用"上下文轮转"机制解决记忆管理难题,将任务拆解为微周期并通过文件系统同步进度。核心突破在于:1)TDD成为AI自治基石,200+测试用例确保开发不偏航;2)文件取代对话成为AI间高效沟通介质;3)开发者角色重构为需求定义和框架设计者。该实验证明,通过严谨的架构约束和验收标准,AI可完成复杂长周期任务,预示着软件开发将从手工作坊 阅读详情

相关推荐

为什么类型论是函数式编程的理想基础?

函数式编程(如Haskell、Scala、OCaml)以“函数为核心”“无副作用”“不可变数据”等特性著称,但它的“安全高效”并非凭空而来——背后的关键支撑是类型论。本文将聚焦“类型论如何支撑函数式编程”,从基础概念到具体案例,解释两者的本质联系。本文将按“故事引入→核心概念解释→关系拆解→原理+代码案例→实际应用→总结”的逻辑展开,用“乐高积木”“菜谱”等比喻贯穿全文,确保抽象理论可视化。类型论:程序的“接口规则手册”,定义类型和函数的约束;函数式编程。

AI天才研究院 694

计算机二级考试第四题,计算机等级二级考试辅导:综合应用上机模拟题及解答(第4部分)...

1、给定某个自然数,编程实现识别该自然数是否为回文数(1)什么是回文数对于什么是回文数(Palindrome Number),读者可以查询百科。定义如下:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数,因为它的n1=1234321;但若n=1234567,则n不是回文数,因为它的n1=7654321,但n1≠n。(...

weixin_36284522的博客 404

STM32移植LVGL(LittleVGL)

**STM32移植LVGL(LittleVGL)**

qq_53000374的博客 1万+

leetcode题目

目录 1.两数之和 2.三数之和(超时了311/313) 3.无重复字符的最长子串 4.寻找两个有序数组的中位数 5.整数反转 6.回文数 7.有效括号 8.两个数组的交集 9.实现strStr() 1...

weixin_30617737的博客 4604

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 356

CSR-DCF视频目标跟踪源码运行笔记

论文基本信息 论文标题:Discriminative Correlation Filter with Channel and Spatial Reliability 论文作者:Alan Lukezic等 论文出处:CVPR 2017 文章链接:https://arxiv.org/abs/1611.08461 补充材料:https://www.semanticscholar.org/paper/D...

越野者的博客 3397

(优化解决)低时间解决偶位回文

我们将这样的数字定义为偶位回文数: 该数字的位数是偶数 该数字是一个回文数 例如:1221就是一个偶位回文数,而121和1234都不是偶位回文数,前者不满足数字的位数是偶数,后者不满足回文数。 给定一个正整数n,请你求出从小到大前n个偶位回文数的和是多少? 输入 输入共一行,一个正整数n 输出 输出前n个偶位回文数的和 样例输入Copy 【样例1】 2 【样例2】 5 样例输出Copy 【样例1】 33 【样例2】 165 提示 样例1解释:从小到大前两个偶位回文数是11,22,..

IT__God的博客 2657

数据仓库建模的步骤-从需求分析到模型优化的全面指南

数据仓库建模是一个系统化的过程,旨在设计和构建一个高效、可扩展的数据存储和分析环境。它的目标是将来自不同源系统的数据整合到一个统一的、面向主题的、随时间变化的数据集合中,以支持企业的决策制定过程。数据仓库建模不仅仅是创建表格和定义关系,它更是一门艺术,需要平衡业务需求、技术限制和未来的可扩展性。提供快速的查询性能支持复杂的分析需求适应业务的变化和增长保持数据的一致性和准确性接下来,让我们深入探讨数据仓库建模的每个主要步骤。

一个8年大数据开发工程师的碎碎念 2099

leetcode:9.判断回文数 --------三种方法

目录题目解法一:转为字符串逆置法解法二:高低位同时消除法解放三:后半部分逆置判断 题目 9.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入:x

Zhou000815的博客 603

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1103

干货|C#上位机与西门子PLC的Profinet协议通信开发(工控机版)

文章摘要: Profinet是西门子主导的工业以太网协议,支持实时通信(RT/IRT),广泛应用于PLC与工控机通信。本文聚焦C#上位机通过S7协议(集成于Profinet接口)高效访问西门子PLC(S7-1200/1500等),提供完整开发方案: 协议基础:解析Profinet三层架构(TCP/IP层、实时层、应用层),对比S7协议优势(开发便捷、跨平台); 开发实践:基于S7NetPlus/Snap7库实现数据读写,涵盖DB块、I/O点等地址规则; 环境配置:工控机(Windows/Linux/统信UO

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1212

leetcode_9_回文数

题目 分析 判断是否为回文数,即判断一个整数倒过来是否与原来相等,那么显然,负数不是回文数。将一个整数倒过来,通过一个简单的循环即可实现。不过,还可以进一步的优化,即不是将整个整数都到过来,然后与原整数比较是否相等,将整数的一半倒过来即可!!! 代码 class Solution { public boolean isPalindrome(int x) { if(x&lt...

xiangfeihuanjue的博客 304

Bash Shell 系统巡检脚本

部分安全相关检查需要root权限,建议通过sudo运行完整检查。

老韩的Linux云计算架构师进阶之路 94

大侠刷力扣(leetcode):回文数(9)

作者:隋顺意 微信:世界上的霸主 博客:Sui_da_xia 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。算法:想要判断此数是否为回文数,先要知道啥事回文数……

Sui_da_xia的博客 1422

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

力扣(Leetcode)第9题:回文数(C语言版本)

给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。本题主要是判断一个数是否为回文数(相当于正着读和反着读,数值都是一样的)回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。- 1 -----可见在定义整型数时需要。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。

qq_39855356的博客 614

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【力扣LeetCode】9 回文数

题目描述(难度易) 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数...

Jiewang的博客 183

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

力扣简单题系列:回文数(LeetCode 9)

这道题通过反转整数并比较的方式,可以轻松判断一个整数是否是回文数。

weixin_53910667的博客 453

力扣9.回文数

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

2502_90980100的博客 237

leetcode-9. 回文数

题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 来源:...

思 214

LeetCode 9. 回文数

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

晴空๓ 2785

力扣[LeetCode].9. 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左) 读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是 一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 方法一:比赛这样写很爽 转化成字符串 to_string方法: 功能: 将数值转化为字符串。返回对应的字符串

C/C++/Linux/MySQL 1092

力扣题库——9.回文数

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

weixin_74165584的博客 825

力扣 9.回文数

(reversed == INT_MAX / 10 && last > 7):如果 reversed 等于 INT_MAX / 10,且 last 大于 7,那么 reversed * 10 + last 也会溢出(因为 INT_MAX 是一个 32 位有符号整数的最大值,其最后一位是 7)。,循环结束后,比较原始数字 original 和反转后的数字 reversed ,如果相等则说明 x 是回文数,返回 true ,否则返回 false。从右向左读, 为 121-。

2401_89122881的博客 829

力扣9. 回文数

力扣9. 回文数 https://leetcode-cn.com/problems/palindrome-number/ 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一...

小麦China的博客 287

力扣LeetCode 简单题9.回文数 。取余数法

9. 回文数 难度简单1862 给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121是回文,而123不是。 示例 1: 输入:x = 121 输出:true 示例2: 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入:x = 10 输出:false 解释...

m0_46630679的博客 368

9. 回文数 - 力扣(LeetCode)

【代码】9. 回文数 - 力扣(LeetCode)

xxm919的博客 254
上一篇: LeetCode-8 字符串转换整数
下一篇: LeetCode-11 盛最多水的容器
jacob2359
博客等级 码龄10年 12粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值