Easy
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Example 2:
1 2 3
| Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
|
Example 3:
1 2 3
| Input: 10 Output: false 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?
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
示例 2:
1 2 3
| 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
|
示例 3:
1 2 3
| 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
|
进阶:
你能不将整数转为字符串来解决这个问题吗?
想法
考虑边界条件即可。用了一个数组把所有数字全部存储下来,然后一一对比即可。还可以考虑一下不存储怎么做。
解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public: bool isPalindrome(int x) { if (x < 0) { return false; } int num[20]; int length = 0; while (x > 0) { num[length++] = x % 10; x /= 10; } for (int i = 0; i < length / 2; i++) { if (num[i] != num[length - 1 - i]) { return false; } } return true; } };
|