LeetCode 9 Java实现回文数判断

题目:

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

示例1:

输入:121
输出:true

示例2:

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

示例3:

输入:10
输出:false
解释:从右向左读为01。因此不是回文数

题目分析:

若一个整数有偶数位则整数左右两边呈对称分布,若为奇数位则除中间位外对称分布。而中间位不影响它是否是回文数。因为不管正序还是逆序其所在位置相同。因此可将整数转化为字符串。同时从头和尾同时比较,若不同则不是回文数,若相同则头++,尾--,直至头尾相等结束。

题解代码:

class Solution {
    public boolean isPalindrome(int x) {
        String s1 = Integer.toString(x);              //将整数转化为字符串
        int right = 0;                            
        int left = s1.length()-1;
        while(right<left)                            //当right和left相等时循环结束
        {
            if(s1.charAt(right)==s1.charAt(left))    //当字符串左右两边相同时继续比较
            {
                right++;
                left--;
            }
            else                                     //若不相等则不是回文数                                   
            {
                return false;
            }
        }
        return true;
    }
}

算法分析:

算法时间复杂度主要体现在一重while循环为O(n)。

原创文章 5 获赞 1 访问量 220

猜你喜欢

转载自blog.csdn.net/hailuorou/article/details/105820002