Leetcode 每日一题9.回文数

ops/2024/12/19 12:51:53/

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

目录

​编辑

问题描述

输入输出格式

示例

约束条件

进阶挑战

解决方案

问题分析

过题图片

字符串转换法

数学方法

算法解释

题目链接

结论


问题描述

给定一个整数 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.ppmy.cn/ops/143183.html

相关文章

旅游创业,千益畅行,开启新的旅游模式!

在当今旅游市场蓬勃发展的时代&#xff0c;旅游卡项目如一颗新星闪耀登场&#xff0c;而千益畅行旅游卡服务更是其中的佼佼者&#xff0c;为广大旅游爱好者带来了全新的旅游体验与机遇。 一、旅游卡项目是如何运作的呢&#xff1f; 千益畅行旅游卡服务的运作模式犹如一部精心…

stm32 查找进硬件错误方法

在STM32中查找硬件错误可以通过多种方法来实现&#xff0c;以下是一些常用的方法&#xff1a; 一、硬件故障定位 电源供电问题&#xff1a; 表现&#xff1a;单片机无法启动或复位&#xff0c;工作不稳定&#xff0c;出现死机或异常现象。 检查方法&#xff1a; 使用万用表测量…

nginx的简单使用

需求分析 需求一&#xff1a; 当主机访问http://localhost:8081:/server1/location1时&#xff0c;访问index_sr1_location1.html 当主机访问http://localhost:8081:/server1/location2时&#xff0c;访问index_sr1_location2.html 当主机访问http://localhost:8081:/server2/l…

django基于python的企业it资产管理系统

目 录 摘 要 目 录 第一章 概述 1.1研究背景 1.2 开发意义 1.3 研究现状 1.4 研究内容 1.5 论文结构 第二章 开发技术介绍 2.1 Python简介 2.2 mysql数据库介绍 2.3 MySQL环境配置 2.4 Django介绍 2.5 B/S架构 第三章 系统分析 3.1 可行性分析 3.1.1技…

【Three.js基础学习】31.Lights Shading

前言 关于灯光如何在着色器中应用&#xff01; 下面将创建三个灯光 分别是点光源&#xff0c;环境光&#xff0c;方向光通过这几种光应用着色器显示对应阴影 学习灯光阴影&#xff0c;着色器的使用 添加三盏灯 点光&#xff0c;方向光&#xff0c;环境光 创建一个环境光 在现…

Chinese-Clip实现以文搜图和以图搜图(transformers版)

本文不生产技术&#xff0c;只做技术的搬运工&#xff01; 前言 作者昨天使用cn_clip库实现了一版&#xff0c;但是觉得大家复现配置环境可能有点复杂&#xff0c;因此有使用transformers库实现了一版&#xff0c;提供大家选择&#xff0c;第一篇参考链接如下&#xff1a; Ch…

OpenCV--图像拼接

OpenCV--图像拼接 代码和笔记 代码和笔记 import cv2 import numpy as np""" 图像拼接&#xff1a; 1. 读取图片&#xff0c;灰度化 2. 计算各自的特征点和描述子 3. 匹配特征 4. 计算单应性矩阵 5. 透视变换 6. 创建一个大图&#xff0c;放图两张图 "&qu…

基于yolov10的遥感影像目标检测系统,支持图像检测,视频检测和实时摄像检测功能(pytorch框架,python源码)

更多目标检测、图像分类识别、目标检测等其他项目可看我主页其他文章 功能演示&#xff1a; 基于yolov10的遥感影像目标检测系统&#xff0c;既支持图像检测&#xff0c;也支持视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;…