原题网址:https://www.lintcode.com/problem/palindrome-number/description
描述
判断一个正整数是不是回文数。
回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。
给的数一定保证是32位正整数,但是反转之后的数就未必了。
您在真实的面试中是否遇到过这个题?
样例
11
, 121
, 1
, 12321
这些是回文数。
23
, 32
, 1232
这些不是回文数。
标签
整数
字符串处理
思路:如果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