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

news2024/9/27 17:30:58

一、题目

二、解题思路

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;
        }

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

2、官方题解

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

代码和注释都放这了,中间那一步是真的只可意会不可言传,我解释不来,小伙伴们就自己举个例子代进去算算吧

// 特殊情况:
        // 如上所述,当 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;

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

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

相关文章

​LeetCode解法汇总1038. 从二叉搜索树到更大和树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给定一个二…

分享66个菜单导航JS特效,总有一款适合您

分享66个菜单导航JS特效&#xff0c;总有一款适合您 66个菜单导航JS特效下载链接&#xff1a;https://pan.baidu.com/s/1dpGGbptx6hEKcBnTMNLIdA?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

自定义starter案例——统计独立IP访问次数

自定义starter案例——统计独立IP访问次数 文章目录 自定义starter案例——统计独立IP访问次数ip计数业务功能开发定时任务报表开发使用属性配置功能设置功能参数配置调整 自定义拦截器开启yml提示功能 ip计数业务功能开发 public class IpCountService {private Map<String…

电气间隙和爬电距离的算法

电气间隙和爬电距离 一、定义 1、电气间隙&#xff1a;不同电位的两个导电部件间最短的空间直线距离。 2、爬电距离&#xff1a;不同电位的两个导电部件之间沿绝缘材料表面的最短距离。 3、隔离距离&#xff08;机械式开关电器一个极的&#xff09;&#xff1a;满足对隔离器…

sqlmap400报错问题解决

python sqlmap.py -r sql.txt --batch --techniqueB --tamperspace2comment --risk 3 --force-ssl–batch 选项全部默认 不用再手动输入 –techniqueB 使用布尔盲注&#xff0c;该参数是指出要求使用的注入方式 –tamperspace2comment使用特殊脚本&#xff0c;space2comment是把…

数据结构学习笔记——广义表

目录 一、广义表的定义二、广义表的表头和表尾三、广义表的深度和长度四、广义表与二叉树&#xff08;一&#xff09;广义表表示二叉树&#xff08;二&#xff09;广义表表示二叉树的代码实现 一、广义表的定义 广义表是线性表的进一步推广&#xff0c;是由n&#xff08;n≥0&…

你好!斐波那契查找【JAVA】

1.有幸遇见 斐波那契查找算法&#xff0c;也称黄金分割查找算法&#xff0c;是一种基于斐波那契数列的查找算法。与二分查找类似&#xff0c;斐波那契查找也是一种有序查找算法&#xff0c;但它的查找点不是中间位置&#xff0c;而是根据斐波那契数列来确定&#xff0c;因此又称…

关于开展人工智能专业人员“计算机视觉处理设计开发工程师”专项培训的通知

“人工智能技术与咨询”发布 工业与信息化部电子工业标准化研究院于2022年7月1日发布《人工智能从业技术人员要求》&#xff0c;现针对已发布标准于1月3日至7日在北京举办《自然语言与语音处理设计开发工程师》中级人才培养&#xff0c;下边是具体文件通知请大家查阅。行业人才…

MYSQL连接合集总结-上

再做了一次这部分的leetcode的题目&#xff0c;如下9题&#xff0c;这里先分析前三题。 1.使用唯一标识码替换员工ID 两个表&#xff0c;employees表&#xff08;id和名字一一对应&#xff09;&#xff0c;employeeUNI表&#xff08;id和唯一标识一一对应&#xff09;&#xf…

牛客剑指offer刷题模拟篇

文章目录 顺时针打印矩阵题目思路代码实现 扑克牌顺子题目思路代码实现 把字符串转换成整数题目思路代码实现 表示数值的字符串题目思路代码实现 顺时针打印矩阵 题目 描述 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字&#xff0c;例如&#xf…

网站防盗链是什么

随着互联网的快速发展&#xff0c;网站的安全问题越来越受到关注。其中&#xff0c;防盗链是许多网站面临的一个重要问题。本文将介绍网站防盗链的基本概念、原因以及如何采取措施进行保护。 一、什么是网站防盗链&#xff1f; 网站防盗链是指未经授权的网站通过技术手段获取…

95基于matlab的多目标优化算法NSGA3

基于matlab的多目标优化算法NSGA3&#xff0c;动态输出优化过程&#xff0c;得到最终的多目标优化结果。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 95matlab多目标优化 (xiaohongshu.com)

mybatis的数据库连接池

直接看原文 原文链接:【MyBatis】 连接池技术_mybatis自带连接池-CSDN博客 本文先不说springBoot整合mybatis后的 本文讲的是没有被springBoot整合前的mybatis自己的默认的连接池 --------------------------------------------------------------------------------------…

三季度付费用户持续增加,知乎的“吸引力法则”是什么?

在过去的12年里&#xff0c;知乎一直是一个问答社区&#xff0c;通过“一问多答”形成了可以进行专业讨论的社区氛围&#xff0c;并累计完成了上亿次这样的专业讨论&#xff0c;同时还借助平台一问多答的形式打造了网文社区&#xff0c;依托于平台专业职场人的资源池打造了职业…

手写VUE后台管理系统8 - 配置404NotFound路由

设置404页面 配置路由404页面 配置路由 这里配置了两个路由&#xff0c;一个是主页&#xff0c;另外一个则匹配任意路由显示为404页面。因为只配置了两个路由&#xff0c;如果路径没有匹配到主页&#xff0c;则会被自动导向到404页面&#xff0c;这样就可以实现整站统一的404页…

低代码如何降低门槛、快速交付、实现可持续IT架构?

目录 低代码开发模式期望达成的目标 1.降低开发门槛 2.加快系统交付 3.建立可持续发展的IT架构 写在最后 低代码的概念&#xff0c;最早提出的时间是在2014年左右&#xff0c;随后一直处于上升期&#xff0c;随着前两年阿里、腾讯的相继入场&#xff0c;竞争逐步加大。低代…

Redis 之 ZSET 实战应用场景,持续更新!

前言 大白话介绍 Redis 五大基本数据类型之一的 ZSET 开发中常见的应用场景 ZSET 介绍 ZSET 与 SET 相同点&#xff1a;都是是 String类型元素的集合&#xff0c;且不允许重复的成员ZSET 与 SET 不同点&#xff1a;ZSET 每个元素都会关联一个 Double 类型的分数&#xff0c;Re…

用python删除指定目录下带某个字符串的图片

前言&#xff1a; 在文件处理中&#xff0c;有时我们需要批量删除指定文件夹中的特定类型文件。如果文件数量非常庞大&#xff0c;手动删除会非常麻烦&#xff0c;所有可以用 Python 编写一个简单而高效的脚本&#xff0c;自动执行重复性的任务&#xff0c;从而节省时间和精力&…

@Scheduled,Quartz,XXL-JOB三种定时任务总结

Scheduled&#xff0c;Quartz&#xff0c;XXL-JOB三种定时任务总结 一、Scheduled 简介 Scheduled 是 Spring 框架中用于声明定时任务的注解。通过使用 Scheduled 注解&#xff0c;你可以指定一个方法应该在何时执行&#xff0c;无需依赖外部的调度器。 这个注解通常与Enab…

避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!

常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素&#xff0c;因此无法正确执行Element Click命令。 2、ElementNotInteractableException 即使目…