Palindrome Number
LeetCode 9 | Difficulty: Easyβ
EasyProblem Descriptionβ
Given an integer x, return true if x is a **palindrome**, and false otherwise.
Example 1:
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
Example 2:
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.
Example 3:
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Constraints:
- `-2^31 <= x <= 2^31 - 1`
Follow up: Could you solve it without converting the integer to a string?
Topics: Math
Approachβ
Mathematicalβ
Look for mathematical patterns or formulas. Consider: modular arithmetic, GCD/LCM, prime factorization, combinatorics, or geometric properties.
When to use
Problems with clear mathematical structure, counting, number properties.
Solutionsβ
Solution 1: C# (Best: 112 ms)β
| Metric | Value |
|---|---|
| Runtime | 112 ms |
| Memory | N/A |
| Date | 2017-07-16 |
Solution
public class Solution {
public bool IsPalindrome(int x) {
if (x < 0 || (x != 0 && x % 10 == 0))
{
return false;
}
int rev = 0;
while (x > rev)
{
rev = rev*10 + x%10;
x /= 10;
}
return (x==rev || x==rev/10);
}
}
Complexity Analysisβ
| Approach | Time | Space |
|---|---|---|
| Solution | $O(n)$ | $O(1) to O(n)$ |
Interview Tipsβ
Key Points
- Start by clarifying edge cases: empty input, single element, all duplicates.
- LeetCode provides 1 hint(s) for this problem β try solving without them first.
π‘ Hints
Hint 1: Beware of overflow when you reverse the integer.