Given an integer x, return true if x is a palindrome, and false otherwise.
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Could you solve it without converting the integer to a string?
class Solution
{
private:
vector<int> digits(int x)
{
vector<int> nums;
for (int i = 10; x > 0; i)
{
nums.push_back(x % i);
x /= 10;
}
return nums;
}
public:
bool isPalindrome(int x)
{
if (x < 0)
return false;
vector<int> nums = digits(x);
for (int i = 0; i < (nums.size() / 2); i++)
{
if (nums[i] != nums[nums.size() - i - 1])
{
return false;
}
}
return true;
}
};