题目: 回文数

来自智得网
跳转至: 导航、​ 搜索

分析

字符串法

该问题使用字符串的方式可以将字符串反转,然后逐位比较,如果比较到结尾每个字符都相等,则该数字是回文数。

数字法

把数字的高位低位反转,然后比较两个字符是否相等。

高位低位反转的过程:

将数字作为第一轮的输入除以10,商为q,余数位r。本轮结果是r。上一轮的输入是q。

重复第一轮的过程,直到q=0,本轮的结果是上一轮结果乘以10加上本轮的余数r。

判断两个数字是否相等。

题解

字符串法

class Solution {
    public boolean solute(int x) {
        String s = String.valueOf(x);
        System.out.println(s);
        int i = 0;
        int j = s.length()-1;
        while(i < j){
            if(s.charAt(i) == s.charAt(j)){
                i++;
                j--;
            }else{
                return false;
            }
        }
        return true;
    }
}

数字法

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