美文网首页
LeetCode9-Palindrome Number(C++)

LeetCode9-Palindrome Number(C++)

作者: PengQ1 | 来源:发表于2020-04-04 09:14 被阅读0次

    Description

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

    Example 1:

    Input: 121 </br>
    Output: true </br>

    Example 2:

    Input: -121 </br>
    Output: false </br>
    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 </br>
    Output: false </br>
    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?

    AC代码

    class Solution {
    public:
        bool isPalindrome(int x) {
            if(x < 0) return false;
            int y = 0, z = x;
            short int n=0;
            while(z != 0) {
                n = z % 10;
                // 这一步是因为要确保 y*10 +n < INT_MAX
                if(y > ((INT_MAX - n)/10)) return false;
                y = y*10 + n;
                z = z/10;
            }
            return (x==y);
        }
        // 这个函数仅仅是用来测试方便,提交的时候也可以不加
        void judgeResult(int x) {
            if(isPalindrome(x)) {
                cout << x << " is palindrome" <<endl;
            } else {
                cout << x << " is not palindrome" <<endl;
            }
        }
    };
    

    测试代码

    int main() {
        Solution s;
        s.judgeResult(-121);
        s.judgeResult(121);
        s.judgeResult(456);
        s.judgeResult(567898765);
    }
    

    测试结果

    -121 is not palindrome
    121 is palindrome
    456 is not palindrome
    567898765 is palindrome
    

    总结

    前面有类似的题目,是判断字符串是否是回文字符串,这道题的描述里面说了在解题时应避免先转换成字符串再做回文。以上的AC代码实际上是利用了之前某一道题目里面的反转字符串,然后判断字符串反转后是否还与本身相等。

    相关文章

      网友评论

          本文标题:LeetCode9-Palindrome Number(C++)

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