Leetcode 每日一题9.回文数

news2025/3/1 9:52:16

🌈🌈🌈今天给大家分享的是:回文数的解法

目录

​编辑

问题描述

输入输出格式

示例

约束条件

进阶挑战

解决方案

问题分析

过题图片

字符串转换法

数学方法

算法解释

题目链接

结论


问题描述

给定一个整数 x,我们需要判断它是否是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文数,而 123 不是。

输入输出格式

  • 输入:一个整数 x
  • 输出:如果 x 是回文数,返回 true;否则,返回 false

示例

  1. 输入:x = 121,输出:true
  2. 输入:x = -121,输出:false。解释:从左向右读,为 -121。从右向左读,为 121-。因此它不是一个回文数。
  3. 输入:x = 10,输出:false。解释:从右向左读,为 01。因此它不是一个回文数。

约束条件

  • -2^31 <= x <= 2^31 - 1

进阶挑战

不将整数转为字符串,解决这个问题。

解决方案

问题分析

要判断一个整数是否为回文数,我们可以采用两种方法:

  1. 字符串转换法:将整数转换为字符串,然后使用双指针从两端向中间遍历,比较字符是否相等。
  2. 数学方法:通过数学运算,反转整数的一半数字,然后比较反转后的数字与原始数字的前半部分是否相等。

过题图片

字符串转换法

这种方法简单直观,但不符合进阶挑战的要求。以下是使用字符串转换法的代码实现:

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) return false;
        String num = Integer.toString(x);
        int l = 0, r = num.length() - 1;
        while (l < r) {
            if (num.charAt(l) != num.charAt(r)) return false;
            l++;
            r--;
        }
        return true;
    }
}

数学方法

这种方法不需要将整数转换为字符串,而是通过数学运算来实现。以下是使用数学方法的代码实现:

class Solution {
    public boolean isPalindrome(int x) {
        // 负数和以0结尾的非0数不是回文数
        if (x < 0 || (x % 10 == 0 && x != 0)) return false;
        
        int reversedHalf = 0, original = x;
        while (x > 0) {
            int pop = x % 10;
            x = x / 10;
            reversedHalf = reversedHalf * 10 + pop;
        }
        
        // 对于奇数长度的回文数,我们只需要判断前半部分
        return original == reversedHalf || original == reversedHalf / 10;
    }
}

算法解释

  1. 负数和以0结尾的非0数不是回文数:首先,我们排除负数和以0结尾的非0数,因为它们不可能是回文数。
  2. 反转整数的一半数字:通过 while 循环,我们不断地取出 x 的最低位数字,并将其加到 reversedHalf 的末尾。同时,我们将 x 除以10,去掉最低位数字。
  3. 比较反转后的数字与原始数字的前半部分:最后,我们比较原始数字 original 与反转后的数字 reversedHalf 是否相等。对于奇数长度的回文数,我们只需要比较 original 与 reversedHalf 除以10的结果是否相等。

题目链接

9. 回文数 - 力扣(LeetCode)

结论

通过上述两种方法,我们可以有效地判断一个整数是否为回文数。数学方法避免了字符串转换

🌈🌈🌈好啦,今天的分享就到这里!

🛩️🛩️🛩️希望各位看官读完文章后,能够有所提升。

🎉🎉🎉创作不易,还希望各位大佬支持一下!

✈️✈️✈️点赞,你的认可是我创作的动力!

⭐⭐⭐收藏,你的青睐是我努力的方向!

✏️✏️✏️评论:你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Turtle 实现动态时钟:十二时辰与星空流星效果

在这篇文章中&#xff0c;我将带你通过 Python 的 turtle 模块构建一个动态可视化时钟程序。这个时钟不仅具备传统的时间显示功能&#xff0c;还融合了中国古代的十二时辰与八卦符号&#xff0c;并通过动态星空、流星效果与昼夜背景切换&#xff0c;为程序增添了观赏性和文化内…

建筑电气火灾是怎么发生的?如何降低电气火灾风险?

电气火灾一直是建筑火灾的主要诱因&#xff0c;占总火灾比例的28.4%。传统的末端配电监控手段存在覆盖范围不足、反应时间滞后等问题&#xff0c;难以及时发现并应对潜在的电气安全隐患。本文提出了一种基于通讯模块、智能微断和智能终端的建筑末端配电解决方案&#xff0c;通过…

Go有限状态机实现和实战

Go有限状态机实现和实战 有限状态机 什么是状态机 有限状态机&#xff08;Finite State Machine, FSM&#xff09;是一种用于建模系统行为的计算模型&#xff0c;它包含有限数量的状态&#xff0c;并通过事件或条件实现状态之间的转换。FSM的状态数量是有限的&#xff0c;因此称…

Qt实现自定义行编辑器

引言 开发环境项目结构ui界面设计示例代码运行效果总结qt中原有的行编辑器无法满足当前的需要,所以需要自定义行编辑器。 通过上下按键切换到不同的行编辑器,在选中的行编辑器中输入数字,编辑器呈现边框,编辑后按下回车键保存之前编辑的数值,没有按下回车键直接切换上下键…

企业级日志分析系统ELK之ELK概述

ELK 概述 ELK 介绍 什么是 ELK 早期IT架构中的系统和应用的日志分散在不同的主机和文件&#xff0c;如果应用出现问题&#xff0c;开发和运维人员想排 查原因&#xff0c;就要先找到相应的主机上的日志文件再进行查找和分析&#xff0c;所以非常不方便&#xff0c;而且还涉及…

2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长

2024153读书笔记|《春烂漫&#xff1a;新平摄影作品选》——跳绳酷似人生路&#xff0c;起落平常&#xff0c;进退平常&#xff0c;莫惧征途万里长 《春烂漫&#xff1a;新平摄影作品选》作者新平&#xff0c;2019.12.25年读完的小书&#xff0c;当时就觉得挺不错&#xff0c;今…

每日一站技術架構解析之-cc手機桌布網

# 網站技術架構解析&#xff1a; ## 一、整體架構概述https://tw.ccwallpaper.com是一個提供手機壁紙、桌布免費下載的網站&#xff0c;其技術架構設計旨在實現高效的圖片資源管理與用戶訪問體驗優化。 ### &#xff08;一&#xff09;前端展示 1. **HTML/CSS/JavaScript基礎構…

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

自 2021 年发布以来&#xff0c;Nacos 2.0 在社区的支持下已走过近三年&#xff0c;期间取得了诸多成就。在高性能与易扩展性方面&#xff0c;Nacos 2.0 取得了显著进展&#xff0c;同时在易用性和安全性上也不断提升。想了解更多详细信息&#xff0c;欢迎阅读我们之前发布的回…

Mybatis -plus -jion的复习

Mybatis -plus -jion 是一个 MyBatis-Plus 的增强工具&#xff0c;在 MyBatis-Plus 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 - **无侵入**&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑 - **损耗小…

计算机网络-Wireshark探索ARP

使用工具 Wiresharkarp: To inspect and clear the cache used by the ARP protocol on your computer.curl(MacOS)ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.route/netstat: To inspect the routes used by your computer.Brows…

Qt之自定义动态调控是否显示日志

创作灵感 最近在芯驰x9hp上开发仪表应用。由于需要仪表警告音&#xff0c;所以在该平台上折腾并且调试仪表声音的时候&#xff0c;无意间发现使用&#xff1a; export QT_DEBUG_PLUGINS1 可以打印更详细的调试信息。于是想着自己开发的应用也可以这样搞&#xff0c;这样更方便…

右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统

一、项目名称 山西右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统 二、项目背景&#xff1a; 山西右玉光伏发电项目位于右玉县境内&#xff0c;总装机容量为200MW&#xff0c;即太阳能电池阵列共由200个1MW多晶硅电池阵列子方阵组成&#xff0c;每个子方阵包含太阳能…

Java基础学习:java常用启动命令

一、java -jar 1、系统属性传递 使用形式&#xff1a;java -DpathD:\jacoco -jar 获取方式&#xff1a;System.getProperties() 2、系统参数传递 使用形式&#xff1a;java -jar application.jar --jacocoPathD:\tomcat 获取方式&#xff1a;通过启动方法入口main的参数arg…

一级考试真题(2019)

一级考试真题&#xff08;2019&#xff09;

echarts图表自定义配置(二)——代码封装

下图是初版&#xff0c;火山图的代码。可以看出&#xff0c;里面的变量&#xff0c;逻辑&#xff0c;函数存在冗余&#xff0c;基本上都是改了参数&#xff0c;同样的get和set&#xff0c;去刷新图表&#xff1b;对于往后继续开发十几二十个图表&#xff0c;会很麻烦。因此需要…

如何用状态图进行设计05

到目前为止&#xff0c;我们已经讨论了状态图的原理。这些原理对状态图和扩展状态图都适用。第二章后面的部分主要讲述了扩展状态图的扩展功能。我们将围绕这些增强的功能&#xff0c;使你对BetterState Pro的设计能力有很好的了解。 关于这些内容和其他有关扩展状态图特性的完…

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中&#xff0c;九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖&#xff0c;用户可以随机获得不同奖品&#xff0c;增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能&#xff0c;并通过代码解析展示实现细节。 【环境准…

【efinance一个2k星的库】

efinance 是一个可以快速获取基金、股票、债券、期货数据的 Python 库&#xff0c;回测以及量化交易的好帮手 但没有等比复权的&#xff0c;不用。 import efinance as ef ef.stock.get_quote_history(510880,fqt2)

协同办公软件新升级:细节优化,让办公更简单

细节决定成败&#xff0c;企业酷信协同办公系统通过贴近客户实际需求的一系列改进和创新&#xff0c;在技术架构、系统结构、管理理念和使用性能上&#xff0c;都达到了国内先进水平&#xff0c;同时具备独特的优势。让我们看看企业酷信是如何通过这些细节提升&#xff0c;为企…

【AI知识】有监督学习分类任务之支持向量机

1.支持向量机概念 支持向量机&#xff08;Support Vector Machine, SVM&#xff09; 是一种有监督学习算法&#xff0c;主要用于分类任务&#xff08;也可用于回归任务&#xff0c;即支持向量回归&#xff0c;SVR&#xff09;。SVM的核心思想是找到一个最优的超平面&#xff0…