9.

作者: Jozhn | 来源:发表于2019-07-30 16:41 被阅读0次

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:
Input: 121
Output: true

Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. 
From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:

Coud you solve it without converting the integer to a string?

class Solution {
public:
    bool isPalindrome1(int x) {
        //负数和以10的倍数肯定不是对称数
        if(x<0||(x>0&&x%10==0))
            return false;
        string num = to_string(x);
        int size = num.size();
        for(int i=0;i<size/2;i++){
            if(num[i]!=num[size-1-i])
            {
                return false;
            }
        }
        return true;
    }
    bool isPalindrome(int x) {
        //使用反转一半长度并比较的方式
        if(x<0|| (x!=0 &&x%10==0)) return false;
        int sum=0;
        while(x>sum)
        {
            sum = sum*10+x%10;
            x = x/10;
        }
        return (x==sum)||(x==sum/10);
    }
};

相关文章

网友评论

      本文标题:9.

      本文链接:https://www.haomeiwen.com/subject/vojnrctx.html