LeetCode - 9 回文数

server/2024/12/23 4:11:38/

题目来源

9. 回文数 - 力扣(LeetCode)

题目描述

给你一个整数 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,因此 121 是回文数。

注意:按照题目要求,本题负数都不是回文数

本题我们可以将整数 x 进行分解,分解出各位上的值,分解策略如下:

  1. x % 10,x对10取余,余数就是分解出来的各位上的值
  2. x /= 10,x整除10,将商重新赋值给x,这样x就是去除了最低位后的新值
  3. 循环以上两步,直到 x == 0 结束

我们可以收集分解过程中的余数,并且由于是低位先被分解出来,因此我们可以按照下面公式将原来整数的低位变高位,实现倒序:

res初始值为0

res = res * 10 + x % 10

C源码实现

bool isPalindrome(int x) {if (x < 0) {return false;}int xx = x; // 后续不操作原始x, 而是操作备份的xxlong y = 0; // y记录x的倒序数while (xx != 0) {y = y * 10 + xx % 10;xx /= 10;}return x == y;
}

C++源码实现

class Solution {
public:bool isPalindrome(int x) {if (x < 0) {return false;}int xx = x; // 后续不操作原始x, 而是操作备份的xxlong y = 0; // y记录x的倒序数while (xx != 0) {y = y * 10 + xx % 10;xx /= 10;}return x == y;}
};

Java源码实现

class Solution {public boolean isPalindrome(int x) {if(x < 0) {return false;}int xx = x; // 后续不操作原始x, 而是操作备份的xxlong y = 0; // y记录x的倒序数while(xx != 0) {y = y * 10 + xx % 10;xx /= 10;}return x == y;}
}

Python源码实现

class Solution(object):def isPalindrome(self, x):""":type x: int:rtype: bool"""if x < 0:return Falsexx = x  # 后续不操作原始x, 而是操作备份的xxy = 0  # y记录x的倒序数while xx != 0:y = y * 10 + xx % 10xx //= 10return x == y

JavaScript源码实现

/*** @param {number} x* @return {boolean}*/
var isPalindrome = function (x) {if (x < 0) {return false;}let xx = x; // 后续不操作原始x, 而是操作备份的xxlet y = 0; // y记录x的倒序数while (xx != 0) {y = y * 10 + xx % 10;xx = parseInt(xx / 10);}return x == y;
};

http://www.ppmy.cn/server/109547.html

相关文章

深入理解归并排序

目录 一、概念 二、递归版实现 三、非递归实现 三、文件归并排序 小结 一、概念 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将…

78.给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集 (幂集)。

78. 子集 LeetCode 78. 子集详解 一、题目描述 给你一个整数数组 nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。 解集不能包含重复的子集。你可以按任意顺序返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,…

使用 streamlink 把 m3u8 转为 mp4

问题描述&#xff0c; 背景&#xff0c; 来源&#xff1a; 下载 m3u8 ts —> 转为mp4, 按照以往的做法&#xff0c; 就是使用 python requests 一步一步地下载 m3u8, ts&#xff0c; 然后转换。 但是个人写的东西&#xff0c;毕竟问题比较多。 而且&#xff0c; 但是&…

浅谈常见的分布式ID生成方案

一、UUID UUID是通用唯一标识码的缩写&#xff0c;其目的是让分布式系统中的所有元素都有唯一的辨识信息&#xff0c;而不需要通过中央控制器来指定唯一标识。 优点&#xff1a; &#xff08;1&#xff09;降低全局节点的压力&#xff0c;使得主键生成速度更快&#xff1b; &…

Qt QT中QString 类的使用--获取指定字符位置、截取子字符串等

QString 类中各函数的作用。 一、字符串连接函数 1、QString也重载的和运算符。这两个运算符可以把两个字符串连接到一起。 2、QString的append()函数则提供了类似的操作&#xff0c;例如&#xff1a; str "User:";str.append(userName);str.append("\n"…

市场纷乱中,沃尔沃坚守长期主义之道,用“P1+P4”解决用户痛点3A品质,插混王者——沃尔沃插混让性能成为插混必要条件

“造车就像西天取经&#xff0c;明确的方向、实现目标的能力&#xff0c;内心的坚持缺一不可”,本届成都国际车展上&#xff0c;来自沃尔沃汽车集团全球高级副总裁袁小林的一句话可谓是振聋发聩&#xff0c;向沉迷玩转“流量密码”的车企&#xff0c;向因各种噱头而迷茫的用户发…

逐行输出三个顺序表中共同存在的元素

给定三个序列A&#xff0c;B&#xff0c;C&#xff0c;长度均为n&#xff0c;且均无重复元素的递增序列&#xff0c;设计一个时间上尽可能高效的算法&#xff0c;逐行输出同时存在于这三个元素中的所有元素。例如数组A为{1,2,3}&#xff0c;数组B为{2,3,4}&#xff0c;数组C为{…

学习react day01

&#xff08;1&#xff09;nodejs.cn 中文网 版本须较新 &#xff08;2&#xff09;全局安装 npm install create-react-app -g &#xff08; 版本查询 create-react-app -V&#xff09; &#xff08;3&#xff09;创建app create-react-app test-app &#xff08;4&…