leetcode9 -- 回文数

题目描述:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数

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

  • 例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

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

提示:

  • -231 <= x <= 231 - 1

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

解法:

方法一、整数转字符串,头尾向内侧遍历比较

这个方法很容易想到,也比较简单。

1.通过Integer.toString()方法将整数转换为字符串,将其拆分为一个一个的字符。

2.去除空格并考虑特殊情况,比如如果开头有符号‘-’,那整数结尾不可能也是‘-’,所以一旦有符号那一定不可能是回文数,返回false。

3.对字符串头尾向内侧遍历,只要有一个不一致就返回false,如果全一致则返回true

代码:

class Solution {public boolean isPalindrome(int x) {String s=Integer.toString(x);s=s.trim();if(s.isEmpty()){return false;}if(s.charAt(0)=='-' || s.charAt(0)== '+'){return false;}int center=s.length()/2;for(int i=0,j=s.length()-1;i<=center && j>=center;i++,j--){if(s.charAt(i)!=s.charAt(j)){return false;}}return true;}
}

方法二、整数通过余数和除法翻转比较

第二个方法是将数字的后一半进行翻转,然后与前一半进行比较。

比如:“123321”,将后三位进行翻转为“123”,再与前一半比较,二者相同,则“123321”是回文。

比如:“12321”,是奇数位数字,将后三位翻转为“123”,与前两位“12”进行比较,“12”=“123/10”,前面一半等于后面一半除以10,则“12321”是回文。

那么如何翻转?

利用余数和除法。

对于12321,其对10取模,得到末尾数字1,对其除以10,把最后一位从数字中移除,得到其余位“1232”,继续让该数字对10取模,得到次末尾数字2,那么反转后的数字成了1*10+2=12,再对其除以10,则到“123”,循环直到反转后的数字等于前一半数字,或者反转后的数字除以10等于前一半数字,即为回文,否则不是回文。

当然,要先考虑特殊情况,比如如果是负数,带有符号‘-’,那一定不是回文,直接返回false,如果数字本身不是0,但最后一位是0,数字的第一位不是0,那也一定不是回文,可直接返回false。

代码:

class Solution {public boolean isPalindrome(int x) {if (x < 0) {return false;} else if (x % 10 == 0 && x > 0) {return false;} else if (x == 0) {return true;} else {int num = 0;// 存储翻转过来的数字while (x != 0) {int yu = x % 10;// 获得余数,也就是从右向左每一位num = num * 10 + yu;// 翻转的数字x /= 10;// x/10if (num >= x) {// 已经到达或过了中心点if (num == x || num / 10 == x) {return true;}return false;}}return false;}}
}

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

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

相关文章

vue3前端开发-小兔鲜项目-路由缓存的更新解决办法

vue3前端开发-小兔鲜项目-路由缓存的更新解决办法&#xff01;默认情况下&#xff0c;如果我们不想办法解决这个问题&#xff0c;vue3框架有个默认的约定&#xff0c;那就是&#xff0c;当仅仅是路由参数发生变化的时候&#xff0c;框架并不会更新整个模块的内容。但是我们现在…

自训练和增量训练word2vec模型

1、自己准备训练语料文件 根据自己的业务场景准备训练数据&#xff0c;比如用户在商城上的同购行为序列或同浏览行为序列。 我们希望通过自己训练业务相关的语料word2vec模型来获得词嵌入、词相关性查询等。 1.1 准备语料库文件 # 示例&#xff1a;准备自己的一个大规模的语…

RDMA通信4:MR(Memory Region, 内存区域)基本概念和作用

MR简介 RDMA通信中MR(Memory Region)指的是由RDMA软件层在内存中规划出的一片区域&#xff0c;用于存放收发的数据。IB协议中&#xff0c;用户在申请完用于存放数据的内存区域之后&#xff0c;都需要通过调用IB框架提供的API注册MR&#xff0c;才能让RDMA网卡访问这片内存区域…

正则表达式概述

一、正则表达式概述 正则表达式&#xff08;Regular Expression&#xff0c;简称regex或regexp&#xff09;是一种强大的文本处理工具&#xff0c;它使用一种特定的模式来描述和匹配一系列符合某个句法规则的字符串。在Python中&#xff0c;我们可以使用re模块来操作正则表达式…

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作&#xff0c;可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能&#xff0c;用户可以创建各种类型的图形&#xff0c;包括线图、散点图、柱状图、曲线图等&#xff0c;以及三维图形、动画等复杂的可视…

数据中台 | 3分钟带你读懂数据中台的由来

1.数据中台产生的原因 数据中台的概念起源于中国阿里巴巴集团提出的“大中台&#xff0c;小前台”战略。这一理念的核心在于通过构建强大的中台体系&#xff0c;为前端的快速创新和个性化业务需求提供强有力的支持。具体到数据中台&#xff0c;其设计初衷是为了应对企业内部数…

springboot在加了mapper之后报错

springboot在加了mapper之后报错 最后发现是spring boot版本不兼容&#xff0c;spring-boot-starter-parent换成3.0.5之后可以了

计算机基础-IO

一、裸机中的IO 我们先看下计算机的组成部分&#xff1a; 从图中我们很清楚的看到Input/Output 即为 IO&#xff0c;也就是计算机主机和外部设备进行信息的交换。 这种交换可能是磁盘IO也有可能是网络IO。 二、操作系统中的IO 操作系统分为内核态和用户态&#xff0c;且默认…

云WAF如何实现对XSS攻击的检测和阻断?

云WAF对XSS攻击的检测和阻断机制 云WAF&#xff08;Cloud Web Application Firewall&#xff09;是一种基于云平台的网络安全解决方案&#xff0c;专门设计用来保护Web应用程序免受各种网络攻击&#xff0c;包括跨站脚本攻击&#xff08;XSS&#xff09;。云WAF通过以下几个关…

活动预告|8月3日 Streaming Lakehouse Meetup · Online 与你相约!

随着大数据分析技术的发展&#xff0c;越来越多的企业采用了数据湖架构。基于 Lakehouse 的架构优势&#xff0c;结合 Flink 的 Streaming 实时流处理能力&#xff0c;Flink 推出了新一代的“Streaming Lakehouse”技术。这一技术旨在能够让数据在湖上自由流动&#xff0c;为用…

js 习题 3

文章目录 绪论12345678910 求最长公共后缀111213 最大公约数1415结语 绪论 『虽有遗憾&#xff0c;绝不后悔。』—— 「古剑奇谭」 1 let buf"";process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} …

HTTP/1.1、1.2、1.3详细信息和主要区别

HTTP&#xff08;超文本传输协议&#xff09;是一种用于传输超文本&#xff08;例如网页&#xff09;的应用层协议。HTTP/1.1 是当前最广泛使用的版本&#xff0c;而 HTTP/2 和 HTTP/3 是其后续版本&#xff0c;旨在提高性能和效率。以下是这些版本的详细信息和主要区别 HTTP/…

从零开始创建vue3项目——包含项目初始化、element-plus、eslint、axios、router、pinia、echarts

项目启动 初始化vue3项目 这里建议先下载pnpm&#xff0c;下载速度更快&#xff0c;如果还没下载可以使用 npm install -g pnpm 如果遇到报错问题&#xff0c;如下 可以在命令行输入下面的指令以切换到淘宝镜像源 npm config set registry https://registry.npm.taobao.org…

2024最佳游戏引擎排行

游戏产业几十年来一直是一个大生意&#xff0c;而且发展势头迅猛。据估计&#xff0c;全球游戏市场在 2025 年每年将达到 5031.4 亿美元&#xff0c;2023 年为 3960 亿美元。 尽管如今有市面上有各种各样的解决方案&#xff0c;但游戏开发人员和管理者在选择适合他们需求的游戏…

LINUX操作系统安全

一、概述内容 操作系统负责计算机系统的资产管理&#xff0c;支撑和控制各种应用程序运行&#xff0c;为用户提供管理计算机系统管理接口。操作系统也是构成网络信息系统的核心关键组件&#xff0c;其安全可靠性决定了计算机系统的安全性和可靠性。 操作系统安全是指满足安全…

kettle从入门到精通 第八十课 ETL之kettle kettle中的json对象字段写入postgresql中的json字段

场景&#xff1a;源数据库表为mysql的其中有json字段&#xff0c;通过kettle 查询出来 插入到目标数据库 postgresql中&#xff0c;对应的表中也有json字段。。但是报错&#xff0c;提示kettle查询出来是varchar的的字段&#xff0c;无法插入到目标数据库中。 1、创建测试表。 …

golang设置远程调试

1. 目标机器构建安装dlv https://github.com/go-delve/delve go build之后将编译号的dlv命令路径添加到PATH里 2. 目标机器下载源代码并且运行dlv dlv debug --headless --listen:2345 --api-version2 --accept-multiclient 3.本机添加go remote 4. 设置断点即可

披荆斩棘:Python开发者在市场低迷期快速找到工作的策略

披荆斩棘&#xff1a;Python开发者在市场低迷期快速找到工作的策略 在瞬息万变的科技领域&#xff0c;市场低迷期对各个领域的专业人士来说都充满了挑战。Python开发者以其灵活性和专业性著称&#xff0c;但也无法完全避免经济波动的影响。然而&#xff0c;通过采取正确的策略…

Cesium高性能渲染海量矢量建筑

0、数据输入为类似Geojson的压缩文件和纹理图片&#xff0c;基于DrawCommand命令绘制&#xff1b; 1、自定义建筑几何&#xff0c;包括顶点、法线、纹理等&#xff1b; 2、自定义纹理贴图&#xff0c;包括按建筑高度贴图、mipmap多级纹理&#xff1b; 3、自定义批处理表&…