LintCode第807题-回文数II

描述

判断一个非负整数 n 的二进制表示是否为回文数

  • 我们保证 0 <= n <= 2^32 - 1

样例1

输入: n = 0
输出: True
解释:
0 的二进制表示为:0。

样例2

输入: n = 3
输出: True
解释:
3 的二进制表示为:11。

样例3

输入: n = 4
输出: False
解释:
4 的二进制表示为:100。

样例4

输入: n = 6
输出: False
解释:
6 的二进制表示为:110。

思路:

1.将n以2进制的求余 得到每一次最低位的二进制数  然后再将其逆序排序 就会得到正确的二进制数

2.利用左右双指针进行同步检查 如果有不相同的字符则不是回文数 当循环结束后如果都相同则是回文数 

代码如下:

public class Solution {

    /**

     * @param n: non-negative integer n.

     * @return: return whether a binary representation of a non-negative integer n is a palindrome.

     */

    public boolean isPalindrome(int n) {

        // Write your code here

        //n起始数字转化为二进制

        StringBuilder stringBuilder=new StringBuilder();

        while(n>=1)

        {

            int currentNum=n%2;

            stringBuilder.append(currentNum);

            n=n/2;

        }

        stringBuilder.reverse();

        System.out.println(stringBuilder.toString());

        int right=stringBuilder.length()-1;

        int left=0;

        //左右比较即会问比较

        while(left<=right)

        {

            if(stringBuilder.charAt(left)!=stringBuilder.charAt(right))

            {

                return false;

            }else

            {

                left++;

                right--;

            }

        }

        return true;

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值