LeetCode-回文数

题目信息

源地址:回文数

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

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

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

提示信息

示例 1

输入:x = 121
输出:true

示例 2

输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3

输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

提示

  • -2^31&#xA0;<= x <="2^31&#xA0;-" 1< code><!--=-->

实现逻辑

双指针

比较简单的思路就是,先将整数转换成字符串,然后使用首尾双指针判断所指位置的字符是否相同,直到所有的字符都被比较完毕。

LeetCode-回文数

如上图所示,使用双指针是比较直观的一个思路,需要注意的就是,负整数都不是回文数,奇数和偶数在做回文判断时有区别。

package cn.fatedeity.algorithm.leetcode;

public class PalindromeNumber {
    public boolean answer(int x) {
        if (x < 0) {
            return false;
        }
        // 转成字符串
        String s = Integer.toString(x);
        // 双指针判断
        int len = s.length();
        for (int i = 0; i < len >> 1; i++) {
            if (i != len - 1 - i && s.charAt(i) != s.charAt(len - 1 - i)) {
                return false;
            }
        }
        return true;
    }
}

不转换成字符串

如果给这道题目加上不能将整数转换为字符串的限制,就需要在数学的角度上去思考其解决方案。

既然是想要判断整数是否是回文,则可以直接将整数翻转成另一个整数,再将这两个整数做相等匹配,此方法的循环次数相比双指针更多,但却没有整数转换成字符串的耗时,整数效率更高一些。

package cn.fatedeity.algorithm.leetcode;

public class PalindromeNumber {
    public boolean answer(int x) {
        if (x < 0) {
            return false;
        }
        // 将整数进行翻转
        int reverse = 0;
        int rest = x;
        while (rest >= 10) {
            reverse = reverse - 10 + rest % 10;
            rest = (int) (rest / 10.0);
        }
        return reverse - 10 + rest == x;
    }
}

Original: https://www.cnblogs.com/fatedeity/p/16497415.html
Author: 程序员翔仔
Title: LeetCode-回文数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/587419/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • bellman-ford 单源最短路问题 图解

    对于边(u,v),用dist(u)和(u,v)的和尝试更新dist(v): dist(v) = min(dist(v) , dist(u)+l(u,v) 注:dist(i)为源点(…

    数据结构和算法 2023年6月12日
    091
  • P7328 「MCOI-07」Dream and Machine Learning

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    092
  • 八大排序算法C/C++代码实现

    本文所有排序算法均为升序排序 typedef int dataType; //这里主要针对整型数据进行排序 typedef struct { vector key; //顺序表关键…

    数据结构和算法 2023年6月12日
    0110
  • 线性筛(欧拉筛)详解

    看到埃氏筛的缺点,同学们可能会想,有没有筛法能够将一个数只筛一遍呢?答案是肯定的。 线性筛思想: 这个合数只会被它的最大非自身因数(对应最小质因数)筛。 这样能保证每个合数只会被筛…

    数据结构和算法 2023年6月8日
    0117
  • B. Irreducible Anagrams【CF 1290B】

    思路: 设tx为t类别字符的个数。 ①对于长度小于2的t明显是”YES”②对于字符类别只有1个的t明显是”YES”③对于字符类别有2…

    数据结构和算法 2023年6月7日
    077
  • Acwing 9.分组背包问题

    题目链接 题目描述 有 N 组物品和一个容量是 V 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编…

    数据结构和算法 2023年6月16日
    066
  • 二叉树的遍历

    一、深度优先遍历二叉树 1.前序遍历(先添加根节点的值,然后添加左右节点的值) 1.1.递归遍历 1.1.1.思路 递归遍历二叉树相对简单: 考虑特殊情况:当根节点为空的时候,直接…

    数据结构和算法 2023年6月7日
    098
  • 有序数组构造平衡树 1、因为是有序数组,所以我们要取数组中间的数作为根节点2、接下来我们可以将数组分成左右两块3、根的左节点为左边的数组的中间的值,而根的右节点为右边数组的中间的值…

    数据结构和算法 2023年6月7日
    095
  • AcWing 第15场周赛

    +a的次数=k%2+k/2-b的次数=k/2 注意数据不要爆范围了 #include<iostream> #include<cstring> #includ…

    数据结构和算法 2023年6月7日
    076
  • Vue过滤器(filters)的简单使用

    1、Vue过滤器的简单介绍 Vue.js &#x5141;&#x8BB8;&#x4F60;&#x81EA;&#x5B9A;&#x4E…

    数据结构和算法 2023年6月7日
    088
  • lua:三元运算符

    lua里面没有类似C++的三元运算符 a?b:c。 第一种实现 if-else — 三元运算符 function iif(condition, a, b) if conditio…

    数据结构和算法 2023年6月7日
    078
  • epoll服务器开发一

    socket英文单词为插座的意思,在网络通信中代表套接字,取插座的意思代表socket需要像插头插座一样配套使用,所以socket需要指定具体的五元组才可以通信,包括源ip、源端口…

    数据结构和算法 2023年6月16日
    093
  • 项目部署方案

    一、项目部署方案 1、原始部署方式 2、整合Jenkins 完整DevOps示例如下: 3、整合CODING 整合CODING实现DevOps https://console.cl…

    数据结构和算法 2023年6月12日
    0100
  • CF 793 div2 D 题解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    076
  • 1109 Group Photo (25 分)

    1. 题目 Formation is very important when taking a group photo. Given the rules of forming K …

    数据结构和算法 2023年6月7日
    0106
  • 随笔1

    今后会陆续把我写得随笔发上来吖 可能有些粗拙… 吾辈当自强 不经意间,脑海里闪过大海的壮阔。我喜欢看海,只因这是祖国的造物。海之蓝,美好,纯洁,我的中国梦就如同茫茫大海…

    数据结构和算法 2023年6月7日
    075
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球