491 回文数

原题网址:https://www.lintcode.com/problem/palindrome-number/description

描述

判断一个正整数是不是回文数。

回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。

给的数一定保证是32位正整数,但是反转之后的数就未必了。

您在真实的面试中是否遇到过这个题?  

样例

11121112321 这些是回文数。

23321232 这些不是回文数。

标签
整数
字符串处理
 
 

思路:如果num是一位数,直接返回true。如果是多位数,依次将每个数位上的数字取出来存入数组中,最后设置两根指针分别从头、尾开始遍历数组,如果头尾所指元素不相等,返回false,否则头指针+ +,尾指针- -。

 

AC代码:

class Solution {
public:
    /**
     * @param num: a positive number
     * @return: true if it's a palindrome or false
     */
    bool isPalindrome(int num) {
        // write your code here
    if (num>=0&&num<=9)
    {
        return true;
    }
    vector<int> tmp;
    while(num)
    {
        tmp.push_back(num%10);
        num=num/10;
    }
    int i=0,j=tmp.size()-1;
    while(i<=j)
    {
        if (tmp[i]!=tmp[j])
        {
            return false;
        }
        i++;
        j--;
    }

    return true;
    }
};

 

 其他思路:还可以将传进来的数转成string,再翻转,对比翻转前后的两个字符串是否相等。 参考:https://blog.csdn.net/jinke_/article/details/76577732

https://blog.csdn.net/zhaohengchuan/article/details/78301499

 

posted @ 2018-06-25 21:28  eeeeeeee鹅  阅读(198)  评论(0编辑  收藏  举报