题目要求
给你一个整数 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法
暴力解法
将各位上的数字依次输出,然后按照顺序进行比对。
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0)
{
return false;
}
vector<int> arrPalindrome;
while (x%10 != 0 || x/10 != 0)
{
int temp = x%10;
x = x/10;
arrPalindrome.push_back(temp);
}
int len = arrPalindrome.size();
for (int i = 0; i < len/2; i++)
{
if (arrPalindrome[i] != arrPalindrome[len -1 - i])
{
return false;
}
}
return true;
}
};
复杂度分析
时间复杂度:
O
(
l
o
g
n
+
1
2
l
o
g
n
)
O(logn + \frac{1}{2}logn)
O(logn+21logn)
空间复杂度:开辟辅助数组所出现的消耗,
O
(
l
o
g
n
)
O(logn)
O(logn)