算法: 回文数

题目:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。

示例 4:

输入:x = -101
输出:false

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

复杂度分析

  1. 时间复杂度
    O(\log n)O(logn),对于每次迭代,我们会将输入除以 1010,因此时间复杂度为 O(\log n)O(logn)。
  2. 空间复杂度
    O(1)O(1)。我们只需要常数空间存放若干变量。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/qq_45793102/article/details/115121738
今日推荐