个人学习--算法(一)

前言

记录一些个人的学习情况,如有错误欢迎指正。

题目

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

示例:如123321或者12321都是回文数

解法

1.解法一

转字符串去判断

public boolean isPalindrome1(int x){
    
    
        String str = new StringBuilder(x+"").reverse().toString();
        return str.equals(x+"");
    }

2.解法二

采用整数的形式去判断

public boolean isPalindrome2(int x){
    
    
        if(x<0){
    
    
            return false;
        }
        int div = 1;
        //为了后面取最高位
        while(x/div>=10){
    
    
            div*=10;
        }
        while(x>0){
    
    
            int left = x / div;//取最高位
            int right = x % 10;//取最低位
            if(left!=right) return false;
            x=(x%div)/10;//去掉最高位和最低位
            div/=100;//除100因为去了两位
        }
        return true;
    }

3.解法三

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

        return x == reverseNum || x== reverseNum/10;//后半部分是奇数的情况
    }

猜你喜欢

转载自blog.csdn.net/njh1147394013/article/details/111540203
今日推荐