资讯专栏INFORMATION COLUMN

leetcode9 Palindrome Number 回数

Songlcy / 2126人阅读

摘要:所以可以采用从右至左遍历数字并按照添加顺序有小到大生成新的数字,判断最终生成的数字是否和遍历结束的数字相等。这里需要考虑一种特殊情况,即当末尾为的情况。

题目要求:判断一个数字是否是回数,不能同使用自然数生成string或数组那样的方式实现
回数的定义:一个自然数,如果该自然数从左向右读和从右向左读都是一样的数,则这个数为回数(隐藏条件,回数不可以为负数)

思路一:双指针

将数字看成是一个数组,使用两个指针分别指向这个数字的首尾,并且判断当前左右指针上的数字是否相等,相等则继续推进直至左右指针相遇

    //双指针,将左右指针分别指向数字的首位
    public boolean isPalindrome(int x) {
        if(x<0 || (x%10==0&&x!=0)){
            return false;
        }
        int rightPointer = 0;
        //获得右指针的初始值,即数组的长度
        while(Math.pow(10, rightPointer)<=x){
            rightPointer++;
        }
        rightPointer--;
        int leftPointer = 0;
        while(rightPointer>leftPointer){
            int left = (int) (x/Math.pow(10, leftPointer)%10);
            int right = (int) (x/(Math.pow(10, rightPointer))%10);
            leftPointer++;
            rightPointer--;
            if(left!=right){
                return false;
            }
        }
        return true;
    }
思路二:判断生成的数字是否相等

上面用数组的思维解决数字的遍历是一种方法,但是要先通过一圈遍历获得右指针,增加了时间。所以可以采用从右至左遍历数字并按照添加顺序有小到大生成新的数字,判断最终生成的数字是否和遍历结束的数字相等。
这里需要考虑一种特殊情况,即当末尾为0的情况。若不优先考虑该情况,就会生成错误的结果

    public boolean isPalindrome2(int x) {
        if(x<0 || (x%10==0&&x!=0)){
            return false;
        }
        int res = 0;
        while(x>res){
            res = res*10 + (x%10);
            x /= 10;
        }
        return (x==res || x==(res/10));
    }


想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66888.html

相关文章

  • leetcode132. Palindrome Partitioning II

    摘要:题目要求现在有一个字符串,将分割为多个子字符串从而保证每个子字符串都是回数。我们只需要找到所有可以构成回数的并且得出最小值即可。即将字符作为,将字符所在的下标列表作为。再采用上面所说的方法,利用中间结果得出最小分割次数。 题目要求 Given a string s, partition s such that every substring of the partition is a ...

    jeyhan 评论0 收藏0
  • leetcode409.Longest Palindrome

    摘要:题目要求输入一个字符串,计算用这个字符串中的值构成一个最长回数的长度是多少。直观来看,我们立刻就能想到统计字符串中每个字符出现的次数,如果该字符出现次数为偶数,则字符一定存在于回数中。这个细节需要注意。 题目要求 Given a string which consists of lowercase or uppercase letters, find the length of the...

    linkin 评论0 收藏0
  • LeetCode9.回文数 JavaScript

    摘要:回文数判断一个整数是否是回文数。回文数是指正序从左向右和倒序从右向左读都是一样的整数。示例输入输出示例输入输出解释从左向右读为。因此它不是一个回文数。 LeetCode9.回文数 JavaScript 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false...

    junbaor 评论0 收藏0
  • leetcode5 Longest Palindromic Substring 最长且为回数的子字符

    摘要:思路二指针最大长度现在我们从回数的特点入手。因此,假设当前得到的回数的最大长度为,我们可以判断或者是不是回数。假设此时指针指向,而已知最大回数子字符串的长度为。 题目要求 Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s i...

    Imfan 评论0 收藏0
  • [LeetCode] 9. Palindrome Number

    Problem Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121Output: trueExample 2: Input: -121Output: falseExplana...

    zhaochunqi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<