当前位置: 首页 > 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;不少还在小学阶段的孩子也存在近视的现象。 而造成这个现象的主要原因就是长时间的用眼导致的…...

从sipML5到现代框架:FreeSWITCH WebRTC客户端升级指南与选型建议

从sipML5到现代框架&#xff1a;FreeSWITCH WebRTC客户端升级指南与选型建议 如果你正在维护一个基于sipML5的FreeSWITCH WebRTC前端项目&#xff0c;可能已经感受到了技术债的压力——浏览器兼容性问题频发、功能扩展困难、社区支持几乎为零。这不是你的错&#xff0c;sipML5作…...

Gemma-3-12b-it实战教程:极简UI背后隐藏的12B模型内存映射优化策略

Gemma-3-12b-it实战教程&#xff1a;极简UI背后隐藏的12B模型内存映射优化策略 1. 项目概述 Gemma-3-12b-it是一款基于Google Gemma-3-12b-it大模型开发的本地多模态交互工具。这款工具针对12B大模型进行了全维度的CUDA性能优化&#xff0c;支持图片上传和文本提问的流式生成…...

Chainlit前端定制化|通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程

Chainlit前端定制化&#xff5c;通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程 你是不是已经体验过各种在线大模型&#xff0c;但总感觉有些限制&#xff1f;比如数据隐私的担忧、网络延迟的困扰&#xff0c;或者想打造一个完全属于自己的、界面更符合业务需求的AI助…...

告别树莓派原生系统:我在SpotMicro上成功部署ROS Kinetic的完整踩坑记录

从树莓派到ROS Kinetic&#xff1a;SpotMicro四足机器人深度改造实战 当树莓派原生系统在SpotMicro项目上反复报错时&#xff0c;我盯着纹丝不动的前腿舵机&#xff0c;意识到是时候转向更专业的ROS方案了。这不是简单的系统切换&#xff0c;而是一次从底层架构到控制逻辑的全面…...

Axure Mac全汉化3步法:设计师效率提升实战指南

Axure Mac全汉化3步法&#xff1a;设计师效率提升实战指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 你是否曾…...

从数据包到DMA:图解GMAC传输描述符的完整生命周期(含TSO/VLAN案例)

从数据包到DMA&#xff1a;图解GMAC传输描述符的完整生命周期&#xff08;含TSO/VLAN案例&#xff09; 在网络硬件加速领域&#xff0c;GMAC&#xff08;Gigabit Media Access Control&#xff09;接口的传输描述符机制是提升数据吞吐效率的核心技术之一。本文将深入剖析一个网…...

SWF逆向工程工作流优化:JPEXS Free Flash Decompiler效率提升技巧

SWF逆向工程工作流优化&#xff1a;JPEXS Free Flash Decompiler效率提升技巧 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler&#xff08;简称FFDec&#…...

HP-Socket技术债务管理成熟度提升计划:行动项与时间表

HP-Socket技术债务管理成熟度提升计划&#xff1a;行动项与时间表 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为高性能TCP/UDP/HTTP通信组件&#xff0c;随…...

提升开发效率:用快马一键生成快速排序多版本性能对比工具

今天在优化一个数据处理模块时&#xff0c;遇到了需要选择合适排序算法的问题。不同数据特征下&#xff0c;快速排序的各种变体表现差异很大&#xff0c;手动测试效率实在太低。于是我用InsCode(快马)平台快速搭建了一个性能对比工具&#xff0c;整个过程比想象中简单很多。 需…...

使用Perfetto进行Settings中网络热点开启后anr分析的整体流程记录

目录 一.背景 二.Perfetto使用流程 阶段一&#xff1a;抓取 Perfetto Trace 文件 1. 指令核心解析 2. 数据源功能详解 (这些是抓取的“维度”) 3. 该指令的作用场景 阶段二&#xff1a;导入并认识 Perfetto UI 面板 1. 致命异常&#xff1a;Duration: (Did not end) 2…...