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

【LeetCode_字符串_逻辑分析】9. 回文数

目录

  • 考察点
  • 第一次:2022年12月7日10:16:33
    • 解题思路
    • 代码展示

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

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

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

输入:x = 121
输出:true

考察点

感觉就是在考察你的逻辑分析。

搞完这个题目可以去看看 LeetCode_5. 最长回文子串。

第一次:2022年12月7日10:16:33

解题思路

" 首先,我们应该处理一些临界情况。所有负数都不可能是回文,例如:-123 不是回文,因为 - 不等于 3。所以我们可以对所有负数返回 false。除了 0 以外,所有个位是 0 的数字不可能是回文,因为最高位不等于 0。所以我们可以对所有大于 0 且个位是 0 的数字返回 false。

现在,让我们来考虑如何反转后半部分的数字。

对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求出上一步结果除以 10 的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以 10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到了我们想要的反转后的数字。如果继续这个过程,我们将得到更多位数的反转数字。

现在的问题是,我们如何知道反转数字的位数已经达到原始数字位数的一半?

由于整个过程我们不断将原始数字除以 10,然后给反转后的数字乘上 10,所以,当原始数字小于或等于反转后的数字时,就意味着我们已经处理了一半位数的数字了。"

—— 文字来源于:LeetCode-Solution : 官方提供的解题文字描述

翻译成图形化的表示如下:

在这里插入图片描述

代码展示

class Solution {
    public boolean isPalindrome(int x) {
        // 临界条件
        if ( x < 0 || (x % 10 == 0 && x != 0)){
            return false;
        }
        // 后部分
        int reverseNum = 0;
        // 是否到达前部分的一半
        while (x > reverseNum){
            reverseNum = reverseNum * 10 + x % 10;
            x = x / 10;
        }
        //  判断前半部分与后半部分是否相等
        return ( x == reverseNum || x == reverseNum / 10);
    }
}

相关文章:

  • 文华财经期货量化策略抄底准确率高的指标公式,逃顶抄底精准共振起涨信号幅图指标
  • 【JDBC】----封装工具类和ORM
  • java-net-php-python-springboot舞房管理系统演示录像0512计算机毕业设计程序
  • 澳亚通过聆讯:上半年营收近3亿美元 元气森林与新希望乳业是股东
  • Linux中线程池的制作
  • Python——基础知识(1)
  • 笔试强训48天——day24
  • 【车载开发系列】UDS诊断---写入数据($0x2E)
  • ARM ACP
  • 评职称需要什么专利
  • CMake详细教程
  • CorelDRAW破解版是如何一步一步坑人的
  • 堆排序讲解
  • 网络工程师备考3章
  • 算法day42|背包问题
  • 《构建中小企业网络V7.1》实验
  • R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
  • Matplotlib入门[05]——注释与标签
  • HarmonyOS/OpenHarmony应用开发-FA模型综述
  • Vue中的diff算法深度解析
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉