力扣LeatCode算法题第9题-回文数

news2025/1/12 4:29:03

要求:

//给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
//回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
//例如,121 是回文,而 123 不是。

 我最初的设计思路是:

1.外循环用来遍历所有的数
2.内循环则让左右指针用来移动对比。
public static boolean isPalindrome1(int x) {
        //给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
        //回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
        //例如,121 是回文,而 123 不是。
        //思路:用最简单的办法是:用两个循环。
        //1.外循环用来遍历所有的数
        //2.内循环则让左右指针用来移动对比。
        String s = String.valueOf(x);

        // 测试:  s="12345467";
        boolean result=false;
        if(s.length()>2){
            for (int i = 0; i < s.length()/2; i++) {
                // s=121    s=1221    s=12321
                for (int j = s.length(); j > s.length()/2; j--) {
                    System.out.println("a="+s.charAt(i));
                    System.out.println("b="+s.charAt(j));
                    if(s.charAt(i) == s.charAt(j)){
                        result=true;
                    }else {
                        return false;
                    }
                }
            }
        }else if(s.length()==2){
            if(s.charAt(0)==s.charAt(1)){
                return true;
            }
        }else if(s.length()==1){
            return true;
        }

        return result;
    }

但这个算法还是有缺陷。有待完善。

后面想出了第二种办法:字面意思。

把这个数进行反转,如果还是相等,那么就是回文.

public static boolean isPalindrome2(int x) {
        if(x<0)
            return false;
        //最简单明了的办法

        //转字符串,进行反转。
        String s = String.valueOf(x);
        StringBuilder stringBuilder =new StringBuilder(s);
        String s_reverse = stringBuilder.reverse().toString();
        int y = Integer.parseInt(s_reverse);
        //int y = Integer.parseUnsignedInt(s_reverse,1000000000);

        return y==x;
    }

这个方法只是提供思路,转字符串后,无法正常解析回Int类型。数值超过1亿会无法解析。

第三种方法是模拟第二种方法的思路,也是反转。

public static boolean isPalindrome(int x) {
        if(x<0)
            return false;
        int rem=0,y=0;
        int quo=x;
        while(quo!=0){
            rem=quo%10;//第一步
            y=y*10+rem;//第二步
            quo=quo/10;//第三步
        }
        return y==x;
    }

这个算法通过了,所有的测试用例。

算法讲解:

整个循环的作用就是把x的数进行倒置。

例如:12322

对12322进行取余

第一次取余=2,除以10后x=1232

第二次取余=2,再除以10后x=123

第三次取余=3.除以10后x=12

第四次取余=4.除以10后x=1

第三次取余=5.除以10后x<0

得到倒置的y值=22321。不等于x值,所以不是回文。

贴上所有的代码:

package com.zhm.test;

import java.util.Arrays;

/**
 * @Author bige
 * @Date: 2022/11/20 21:56
 * @ApiNote:回文数
 */
public class Leatcode_test009 {

    public static boolean isPalindrome1(int x) {
        //给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
        //回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
        //例如,121 是回文,而 123 不是。
        //思路:用最简单的办法是:用两个循环。
        //1.外循环用来遍历所有的数
        //2.内循环则让左右指针用来移动对比。
        String s = String.valueOf(x);

        // 测试:  s="12345467";
        boolean result=false;
        if(s.length()>2){
            for (int i = 0; i < s.length()/2; i++) {
                // s=121    s=1221    s=12321
                for (int j = s.length(); j > s.length()/2; j--) {
                    System.out.println("a="+s.charAt(i));
                    System.out.println("b="+s.charAt(j));
                    if(s.charAt(i) == s.charAt(j)){
                        result=true;
                    }else {
                        return false;
                    }
                }
            }
        }else if(s.length()==2){
            if(s.charAt(0)==s.charAt(1)){
                return true;
            }
        }else if(s.length()==1){
            return true;
        }

        return result;
    }

    public static boolean isPalindrome(int x) {
        if(x<0)
            return false;
        int rem=0,y=0;
        int quo=x;
        while(quo!=0){
            rem=quo%10;
            y=y*10+rem;
            quo=quo/10;
        }
        return y==x;
    }

    public static boolean isPalindrome2(int x) {
        if(x<0)
            return false;
        //最简单明了的办法

        //转字符串,进行反转。
        String s = String.valueOf(x);
        StringBuilder stringBuilder =new StringBuilder(s);
        String s_reverse = stringBuilder.reverse().toString();
        int y = Integer.parseInt(s_reverse);
        //int y = Integer.parseUnsignedInt(s_reverse,1000000000);

        return y==x;
    }

    public static void main(String[] args) {
        //int x =123454321;
        //int x =121;
        //int x =-121;
        //int x =0;
        //int x =11;
        int x = 1000021;
        //int x = 1001;
        System.out.println("num="+x+",result="+isPalindrome2(x));
    }
}

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

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

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

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

相关文章

百世的数智化供应链凭何融入企业生命周期?

在供应链这个词出现前&#xff0c;供应链的本体就已经存在。 萨缪尔森说&#xff0c;现代经济生活的命脉是交换。当不同的物资、资金、信息在产业链上流动起来时&#xff0c;产业才能形成模型&#xff0c;经济才会有活力。然而&#xff0c;供应商增加、活动变多、地理距离拉长…

智慧气象解决方案-最新全套文件

智慧气象解决方案-最新全套文件一、建设背景二、建设架构传统气象所面临的挑战&#xff1a;1、气象数据大幅快速增长&#xff0c;导致计算能力不足2、人工智能应用不足&#xff0c;短临预报精度较低3、气象数据分散&#xff0c;数据融合困难4、气象服务方式单一&#xff0c;体验…

外卖项目04---菜品管理业务开发

效果展示: 目录 一、文件上传下载 50 1.1文件上传 50​编辑 1.2文件下载 1.3文件上传下载---文件上传代码实现1 1.4文件上传下载---文件上传代码实现2 1.5文件上传下载---文件下载代码实现 53 二、新增菜品 54 2.1需求分析 54 2.2数据模型 2.3新增菜品---代码开发--…

uniapp使用nfc功能及详解

公司使用uniapp在android手机端要增加一个nfc识别的功能。在此记录一下实现的过程。 资料查找 我的代码逻辑主要来源于找到的这篇文章&#xff1a; uniapp-安卓NFC读取 - 我要找到我的全世界 - 博客园 文章内附有代码&#xff0c;为防止文章失效代码消失&#xff0c;在这篇文…

向中央超算平台进化 哪吒汽车发布技术品牌“浩智”

电子电气架构是汽车的“大脑和神经系统”&#xff0c;决定了智能汽车的体验上限。为了实现高阶智能&#xff0c;车企须将汽车的电子电气架构从分布式&#xff0c;向集中式转变&#xff0c;打造出中央超算平台 11月21日&#xff0c;哪吒汽车举行“浩智战略2025”全球技术品牌发布…

Mentor Xpedition VX2.11入门遇到的问题和解决方案 (1)

一、前言 平时使用AD绘制板子&#xff0c;最近又朋友强烈推荐Mentor Xpedition。说它的自动布线功能非常强。相比于pads&#xff0c;这款软件的教程很少。但好在B站还是又几个不错的视频。在相关视频的讲解下&#xff0c;慢慢入门。目前来看这款软件的易用性很差&#xff0c;操…

aws eks创建节点组的不同方式和逻辑

该问题来源于&#xff0c;eks节点组能否修改实例类型&#xff0c;不同创建方式修改节点参数的方式是否有区别。结论如下&#xff1a; eksctl创建托管节点组&#xff0c;无法通过修改启动模板修改节点类型&#xff08;在eks控制台update会报错&#xff09;&#xff0c;但是可以…

网络系统管理 - Server02配置

一、Server02系统基础环境配置 二、DISK配置服务器软RAID工作任务 三、DFS membe端配置工作任务 1.Server02系统基础环境配置 (1)请根据附件说明或提供的基础信息,配置服务器的主机名,IP 地址,创建要求的用户名及密码;

docker镜像、容器 常用命令,容器端口映射

文章目录前言一、docker基础命令二、docker镜像命令1、docker images&#xff1a;列出本地主机的镜像2、 docker search &#xff1a;查看镜像3、docker pull&#xff1a;拉取镜像4、docker rmi &#xff1a; 删除docker镜像三、docker容器命令1、环境准备2、运行容器3、启动、…

Python常见工厂函数用法

工厂函数&#xff1a;能够产生类实例的内建函数。 工厂函数是指这些内建函数都是类对象&#xff0c; 当调用它们时&#xff0c;实际上是创建了一个类实例。 Python中的工厂函数举例如下&#xff1a; int(),long(),float(),complex(),bool()aint(9.9) a 9 blong(45) b 45L ff…

JavaScript 虚拟键盘:Mindfusion JavaScript Keyboard

高度交互&#xff0c;高度可定制--JavaScript 虚拟键盘--Mindfusion JavaScript Keyboard 现在&#xff0c;您的 JavaScript 应用程序可以像本地移动应用程序一样处理屏幕输入。 特征 键盘布局 扩展、紧凑和标准布局模式。KeyboardLayout 工具可帮助您根据需要创建和排列自定义…

【Hack The Box】linux练习-- Traverxec

HTB 学习笔记 【Hack The Box】linux练习-- Traverxec &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月21日&#x1f334; &#x…

Spark学习(5)-Spark Core之RDD

1 RDD详解 1.1 为什么需要RDD 分布式计算需要: 分区控制Shuffle控制数据存储\序列化\发送数据计算API等一系列功能 这些功能, 不能简单的通过Python内置的本地集合对象(如 List\ 字典等)去完成。我们在分布式框架中, 需要有一个统一的数据抽象对象, 来实现上述分布式计算所需…

JavaScript面向对象:类的继承

继承 现实中的继承&#xff1a;子承父业&#xff0c;比如我们都继承了父亲的姓。 程序中的继承&#xff1a;子类可以继承父类的一些属性和方法。 语法&#xff1a; class Father{ // 父类 } class Son extends Father { // 子类继承父类 } 实例&#xff1a; cla…

手把手教你开通小程序流量主

手把手教你开通小程序流量主 开通条件是累计独立访客不低于 1000。也就是1000级以上&#xff0c;其实这个不难。 接下来以防火安全知识专项学习与竞答为例&#xff0c;写一篇开通流量主、创建广告和代码嵌入的图文教程。 功能介绍 广告展示位置灵活控制&#xff0c;接入简单…

操作系统复习【面试】

操作系统复习【面试】前言推荐操作系统复习第一章 操作系统引论 11.3 操作系统的基本特性 141.3.1 并发1.3.2 共享1.3.3 虚拟1.3.4 异步1.4 操作系统的主要功能 171.4.1 处理机管理功能1.4.2 存储器管理功能1.4.3 设备管理功能1.4.4 文件管理功能1.4.5 操作系统和用户之间的接口…

目标管理利器OKR-给被各大APP抢占使用时长的你

今天聊聊好用的时间和目标管理利器OKR&#xff0c;给被各大APP抢占使用时长的你。 1、海龟的秘密 一个游泳健将&#xff0c;他发现自己竟然游不过一只海龟&#xff0c;这让他疲惫不堪&#xff0c;又失望&#xff0c;又难堪。 然后他又去不断观察&#xff0c;终于发现了海龟游…

数据结构之队列

文章目录前言一、队列二、队列应该如何实现顺序表or链表扩展了解三、队列的实现1.队列的声明2.接口&#xff08;声明&#xff09;3.接口的实现创建一个新的节点判断队列为空队头元素入队出队销毁队列注意&#xff1a;4.主函数&#xff08;测试&#xff09;四、相关习题总结前言…

【C++基础】友元

友元 定义&#xff1a;类的特点是私有成员无法在作用域外访问&#xff0c;而友元函数是特权函数&#xff0c;允许访问私有成员。 语法&#xff1a;在函数或类前加friend。 例子&#xff1a;在message中&#xff0c;published每个人都可访问&#xff0c;secret只有自己可以访问…

开放经济中的货币-中国视角下的宏观经济

开放经济中的货币 – 潘登同学的宏观经济学笔记 文章目录开放经济中的货币 -- 潘登同学的宏观经济学笔记汇率&#xff1a;复习外汇冲销下的可能三角中国的811汇改国际货币体系的现在与未来当前国际货币体系存在三个主要问题体系具有内生不稳定性美元的中心地位带来了不平等非对…