当前位置: 首页 > news >正文

LeetCode力扣每日一题(Java):9、回文数

一、题目

二、解题思路

1、我的思路

当x<0时,x一定不是回文数,直接返回false

当x>=0且x<10时,x一定是回文数,直接返回true

x>=10时,先将x转为字符串。将数字转成字符串方法挺多的,以下是(国内盗版的)chatgpt教我的几种方法:

 但是我偏偏没有用上述的任何一种方法,受到第四种方法的启发,我突然想到了一个新方法:先定义一个空字符串,再拼接上x

String sx = "";
sx += x;

将x转成字符串后,我们再利用之前学的substring将字符串中处于对称位置的字母截取出来,然后再通过equals进行比较即可。

在这里我想分享一下作为一个小白,我踩到的一个坑:

再截取到对称位置的字母之后,需要比较这两个字母是否是同一个,于是我用了:

if(sx.substring(i,i+1) != sx.substring(sx.length()-i-1))

然后我在控制台输入了121,控制台竟然输出了一个false,天哪,121明明是回文数呀!你干嘛给我输出false

后来才知道:在Java中,字符串的比较应该使用 equals() 方法而不是 != 运算符。  != 运算符比较的是两个对象的引用是否相等,而不是它们的内容是否相等

分享完毕,新手们注意必坑,不要和我一样傻里傻气的

下面是我的源代码

if(x<0){return false;}else if(x>=0 && x<10){return true;}else{String sx = "";sx += x;for(int i=0;i<sx.length()/2;i++){if(i==0){if(!sx.substring(i,i+1).equals(sx.substring(sx.length()-i-1))){return false;}}else if(!sx.substring(i,i+1).equals(sx.substring(sx.length()-i-1,sx.length()-i))){return false;}}return true;}

再补充一下:其实遍历字符串的每一个字母不用像我的代码这么麻烦,我们完全可以用cahrAt和toCharArray,奈何我当时没想到……可能是刚学API,还不熟吧……

我是一个过渡段:在提交了题解之后,我惊讶地发现,我的代码空间效率和时间效率都远低于其他用户,这是为什么呢?于是我查看官方题解:什么?!我在这写这题写了这么半天,你用几行代码就搞定啦?!

2、官方题解

力扣的代码量确实很少,时间效率也确实很高。但是思维量也是真的大,不拿纸笔演算都看不懂

代码和注释都放这了,中间那一步是真的只可意会不可言传,我解释不来,小伙伴们就自己举个例子代进去算算吧,反正我算完之后脑袋里就回响着两个字:妙啊~

值得一提的是,虽然官方题解的思维量稍大,但是不影响小伙伴们把这种解题思想积累起来,因为这种思想还是比较巧妙的,以后可能也会用到。这种通过不断地%10再/10达到的取个位数再丢弃的效果,在逐位分离长整数(如把12345分离并输出成1,2,3,4,5)和翻转长整数(例如将12345转成54321并输出)类型的题目中都会用到

// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文,// 则其第一位数字也应该是 0// 只有 0 满足这一属性if (x < 0 || (x % 10 == 0 && x != 0)) {return false;}//这一步实在太神奇了,自己拿纸笔演算一下吧int revertedNumber = 0;while (x > revertedNumber) {//x % 10 = 取x的个位上的数//x / 10 = 将x个位上的数舍弃revertedNumber = revertedNumber * 10 + x % 10;x /= 10;}// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。return x == revertedNumber || x == revertedNumber / 10;

3、C语言时期的解题思路

无意间翻看之前我在学c语言的时候提交的c语言题解,发现我提交的c语言代码时间效率和空间效率都击败了大部分用户,于是我好奇地点开之前提交的代码,却发现……看不懂了

蛙趣我当时脑子也太好使了吧怎么能想到这样的思路:逐位分离长整数并储存到数组中,然后在比较数组对称位置的数字是否相等

以下是我提交的c语言代码

if(x<0)return false;int count=1;int arr[100];while(1){if(x/(int)pow(10,count)!=0){arr[count]=x%(int)pow(10,count)/(int)pow(10,count-1);count++;}else{arr[count]=x/(int)pow(10,count-1);break;}}for(int i=1;i<=count/2;i++)if(arr[i]!=arr[count-i+1])return false;return true;

相关文章:

LeetCode力扣每日一题(Java):9、回文数

一、题目 二、解题思路 1、我的思路 当x<0时&#xff0c;x一定不是回文数&#xff0c;直接返回false 当x>0且x<10时&#xff0c;x一定是回文数&#xff0c;直接返回true x>10时&#xff0c;先将x转为字符串。将数字转成字符串方法挺多的&#xff0c;以下是&…...

WPF前端实现人脸扫描动画效果

前言 本章实现的效果主要通过OpacityMask与LinearGradientBrush(径向渐变) 的组合应用来实现。最终实现效果如下: LinearGradientBrush线性渐变画刷 LinearGradientBrush其实很简单,我们只需要关注5个属性,使用这5个属性你就可以完成这个画刷几乎所有的变化。 属性介…...

更改AndroidStudio模拟器位置

C盘何等的珍贵&#xff0c;可是好多工具&#xff0c;软件非得默认安装在C盘。。导致C盘越来越紧张。。 在日常使用过程中&#xff0c;安装任何软件都会将其安装到非系统盘下&#xff0c;Android模拟器也不能例外。保护好C盘也是日常一个良好的习惯。 Android AVD默认路径&…...

Dash 协议介绍

<?xml version"1.0" encoding"utf-8"?> <MPD xmlns"urn:mpeg:dash:schema:mpd:2011" minBufferTime"PT1.5S" type"static" mediaPresentationDuration"PT0H1M0.3S" maxSegmentDuration"PT0H0M2.0…...

RabbitMQ的消息发送和接收机制

所有 MQ 产品从模型抽象上来说都是一样的过程&#xff1a; 消费者&#xff08;consumer&#xff09;订阅某个队列。生产者&#xff08;producer&#xff09;创建消息&#xff0c;然后发布到队列&#xff08;queue&#xff09;中&#xff0c;最后将消息发送到监听的消费者。 上…...

记录111

在两台 RHEL 8 服务器上搭建 PostgreSQL 和 pgpool-II 环境涉及到安装 PostgreSQL、配置流复制&#xff08;Streaming Replication&#xff09;以及安装和配置 pgpool-II。以下是详细的步骤&#xff1a; ### 准备工作 1. **获取服务器**&#xff1a;确保你有两台运行 RHEL 8 的…...

振动和震动的区别?

问题描述&#xff1a;振动和震动的区别&#xff1f; 问题解决&#xff1a; 震动&#xff08;Oscillation&#xff09;&#xff1a; 特点&#xff1a; 随机的、突发的、不经常的、无规律的运动。例子&#xff1a; 地壳震动、消息震动全国&#xff0c;强调的是运动的力度或幅度&…...

3DMM模型

目录 BFMBFM_200901_MorphableModel.matexp_pca.bintopology_info.npyexp_info.npy BFM BFM_2009 01_MorphableModel.mat from scipy.io import loadmat original_BFM loadmat("01_MorphableModel.mat") # dict_keys: [__header__, __version__, __globals__, # …...

Python 3 使用 write()、writelines() 函数写入文件

1 使用 write() 函数&#xff0c;将字符串&#xff08;或字节串&#xff0c;仅适用写入二进制文件中&#xff09;写入文件中。 with open(example.txt,w,encodingutf-8) as f:f.write(春夜喜雨\n)f.write(杜甫 [唐代]\n)f.write(好雨知时节&#xff0c;当春乃发生。\n)f.write(…...

鸿蒙(HarmonyOS)应用开发——管理组件状态

状态管理 在应用中&#xff0c;界面通常都是动态的。 #mermaid-svg-DrPNsglFkyLqn7Lw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DrPNsglFkyLqn7Lw .error-icon{fill:#552222;}#mermaid-svg-DrPNsglFkyLqn7Lw …...

倚天屠龙:Github Copilot vs Cursor

武林至尊&#xff0c;宝刀屠龙。号令天下&#xff0c;莫敢不从。倚天不出&#xff0c;谁与争锋&#xff01; 作为开发人员吃饭的家伙&#xff0c;一款好的开发工具对开发人员的帮助是无法估量的。还记得在学校读书的时候&#xff0c;当时流行CS架构的RAD&#xff0c;Delphi和V…...

【web安全】RCE漏洞原理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 RCE漏洞介绍 简而言之&#xff0c;就是代码中使用了可以把字符串当做代码执行的函数&#xff0c;但是又没有对用户的输入内容做到充分的过滤&#xff0c;导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…...

EI论文复现:基于组合双向拍卖的共享储能机制研究程序代码!

本程序参考EI期刊论文《基于组合双向拍卖的共享储能机制研究》&#xff0c;文中的组合双向拍卖交易机制较为新颖&#xff0c;本质上属于博弈范畴&#xff0c;共享储能是目前的研究热点&#xff0c;牵涉到共享储能参与者的投标策略和收益函数&#xff0c;文中所提模型可为电力市…...

ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务

在 ThinkPHP 5 中&#xff0c;你可以使用定时任务调度器&#xff08;TaskScheduler&#xff09;来执行其他定时任务。以下是一个示例代码&#xff0c;演示如何在一个定时任务中执行另一个定时任务&#xff1a; 首先&#xff0c;你需要创建一个继承自 think\console\Command 的…...

mysql:免费的GUI客户端工具推荐并介绍常用的操作

给大家推荐几个常用的 mysql 数据库客户端 sequel-pro sequel-ace 官网下载地址 免费 sequel-ace 可以理解为 Sequel Pro 的升级版&#xff0c;由于Sequel Pro官方不维护了&#xff0c;特别是对 MySQL 8.0 支持不好&#xff0c;所以现在由社区维护了新分支 sequel-ace&#x…...

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)

Unity 在开发的时候如果数据量比较大&#xff0c;或者一部分数据需要存在云端&#xff0c;那么就需要一些数据库 轻量型到大型的包括&#xff1a; 数组-内存存储读取 列表-内存存储读取 List<T> tList new List<T>(); XML-硬盘存储读取 JSON-硬盘存储读取 …...

使用JAVA语言写一个排队叫号的小程序

以下是一个简单的排队叫号的小程序&#xff0c;使用JAVA语言实现。 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class NumberingSystem {public static void main(String[] args) {Queue<String> queue new LinkedList<…...

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

文章目录 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表140.1 相关概念140.2 操作步骤140.3 维护建议 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表 为了保证数据库的有效运行&#xff0c;数据库必须在插入/删除操作后&#xff0c;基于…...

ubuntu20.04使用LIO-SAM对热室空间进行重建

一、安装LIO-SAM 1.环境配置 默认已经安装过ros sudo apt-get install -y ros-Noetic-navigation sudo apt-get install -y ros-Noetic-robot-localization sudo apt-get install -y ros-Noetic-robot-state-publisher 安装 gtsam(如果是18.04的ubuntu直接按照官网配置&…...

如何选学生用的台灯?眼科专家都说好的学生台灯分享!

根据中国眼健康白皮书显示&#xff0c;我国儿童青少年近视总体发生率为53.6%&#xff0c;由此可见如今青少年学生近视的发病率非常高的&#xff0c;且越来越向低龄化发展&#xff0c;不少还在小学阶段的孩子也存在近视的现象。 而造成这个现象的主要原因就是长时间的用眼导致的…...

Linux4.8、环境变量续

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解&#xff0c;那么建议先看完这篇文章&#xff1a;环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…...

PTA 7-231 买文具

某小学要购置文具。批发市场中 A 牌的铅笔卖 5 元一支&#xff0c;C 牌的铅笔卖 2 元一支&#xff0c;D 牌的简易铅笔卖1元2只&#xff08;捆绑销售&#xff0c;只能买偶数只&#xff09;。 如果想用n元买n支笔&#xff0c;问有多少种买法&#xff1f;&#xff08;题目保证 n …...

GPTs每日推荐--生化危机【典藏版】

今天给大家推荐一个游戏性质的GPTs&#xff0c;叫做生化危机典藏版&#xff0c;国内点击可玩。 开篇&#xff1a;玩家从末日中醒来。 选择&#xff1a;玩家会遇到各种资源、任务、剧情&#xff0c;需要自行选择相关的分支剧情&#xff0c;一旦选错&#xff0c;无法重选。 结局…...

jenkins-cicd基础操作

1.先决条件 1.首先我个人势在k8s集群中创建的jenkins,部署方法搭建 k8s部署jenkins-CSDN博客 2.安装指定插件. 1.Gitlab plugin 用于调用gitlab-api的插件 2.Kubernetes plugin jenkins与k8s进行交互的插件,可以用来自动化的构建和部署 3.Build Authorizatio…...

ctfhub技能树_web_信息泄露

目录 二、信息泄露 2.1、目录遍历 2.2、Phpinfo 2.3、备份文件下载 2.3.1、网站源码 2.3.2、bak文件 2.3.3、vim缓存 2.3.4、.DS_Store 2.4、Git泄露 2.4.1、log 2.4.2、stash 2.4.3、index 2.5、SVN泄露 2.6、HG泄露 二、信息泄露 2.1、目录遍历 注&#xff1…...

使用Docker本地部署chatgpt

GitHub上有一个开源的工程ChatGPT-Next-Web&#xff0c;这个工程已经封装好了UI以及和OpenAI的API之间的交互&#xff0c;你要做的事情就是把他部署到本地&#xff0c;并配置好你的OpenAI的sk&#xff0c;然后就可以使用了。那么接下来的文章里&#xff0c;我会手把手教你如何C…...

SpringBoot 集成Netty、WebSocket,5分钟搭建聊天通信系统

文章目录 前言Netty简介使用Netty开发WebSocket应用程序开始项目一、添加依赖二、自定义处理器三、初始化通道加载器四、配置启动器五、添加启动监听器六、启动项目七、演示效果1. 客户端1看到其他客户端上线2. 客户端3收到客户端1发送的消息3. 客户端1收到客户端2下线前言 在…...

LeedCode刷题---双指针问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 双指针简介 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff0c;一种是左右指针。 对撞指针:一般用于顺序结构中&…...

使用Notepad++编辑器,安装AnalysePlugin搜索插件

概述 是一款非常有特色的编辑器&#xff0c;Notepad是开源软件&#xff0c;Notepad中文版可以免费使用。 操作步骤&#xff1a; 1、在工具栏 ->“插件”选项。 2、勾选AnalysePlugin选项&#xff0c;点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装…...

胶囊网络实现手写数字分类

文章目录 前言一、完整代码二、修改成自己的数据集总结 前言 胶囊网络的概念可以先行搜索。 一、完整代码 import torch import torch.nn.functional as F from torch import nn from torchvision import transforms, datasets from torch.optim import Adam from torch.util…...

做网站销售怎么找客户/怎样创建一个网站

简介&#xff1a;对于一个 ZIP 文件&#xff0c;由于标准的解压方式总是从读取文件的末尾开始的&#xff0c;因此必须下载完整个 ZIP 解压后才能访问。当用户通过网络访问 ZIP 文件时&#xff0c;下载解压所带来的耗时将大大降低用户体验。那么能不能边下载边解压呢&#xff1f…...

邮件格式模板/太原seo快速排名

原标题&#xff1a;能测血压&#xff0c;还有心电图&#xff0c;兼顾9大运动模式&#xff0c;dido手环还不错随着科技的不断进步&#xff0c;高科技产品不断的涌向市场&#xff0c;无论是从0到1的新概念产品&#xff0c;还是科技互联网赋能的加持产品&#xff0c;都得到了快速的…...

怎么在网站底部做备案号/微信引流用什么软件好用

MySQL安装说明 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&…...

网站美化教程下载/百度官方免费下载

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l转载于:https://www.cnblogs.com/ftrako/p/8295421.html...

做游戏直播什么游戏视频网站/永久免费不收费的污染app

1、变量名就像我们现实社会的名字&#xff0c;把一个值赋值给一个名字时&#xff0c;它会存储在内存中&#xff0c;称之为变量&#xff0c;大多数语言中&#xff0c;都把这种行为成为“给变量赋值”或“把值存储在变量中”。2、不过python与大多数其他计算机语言的做法稍有不同…...

旅游网站开发毕业论文前言/搜索引擎收录提交入口

用户在使用经典虚拟机时&#xff0c;经常会有如下疑问&#xff1a;门户主板页面中的 SSH/RDP 证书指纹这项信息是怎么来的&#xff1f;用途是什么&#xff1f;为什么有的时候为空&#xff1f;有没有对虚拟机使用有什么影响&#xff1f;以下我们进行一些基本的介绍&#xff1a; …...