View Palindrome Number on LeetCode
Statistics
Time Spent Coding
1 minute
Time Complexity
O(n) - Each number in x
is visited at most twice, resulting in the O(n) time complexity. Since the multiple of two (2n) does not affect the growth rate of the function, it is not “counted” when analyzing the time complexity.
Space Complexity
O(n) - Although we are replacing x
with its string counterpart, we must still have n space in memory to allocate to the string before it replaces x
, resulting in the O(n) space complexity.
Explanation
Before iterating through the input number, we must convert it to a string and initialize our front (f
) and end (e
) pointers to their respective values.
After this, we enter a while
loop until the front pointer exceeds the end pointer.
Inside this loop, we check if the front element is not equal to the end element.
- If not equal, we
return False
because this number is no longer a palindrome. - If equal, we increment our pointers towards each other and continue to the next iteration.
If the while loop exists successfully, the input number is a valid palindrome, so we return True
.
Algorithm Description
Two Pointer Algorithm - An algorithm typically used to search a list where opposite ends of the list share a relationship that will be compared to determine some outcome.
For this problem, that condition would be if the elements are equal; if not, the input number is not a palindrome.
Visual Examples
The two-pointer algorithm being performed on a list where the condition summing to 6, click to view
Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def isPalindrome(self, x: int) -> bool:
s = str(x)
f = 0
e = len(s)-1
while f < e:
if s[f] != s[e]: return False
f +=1
e -=1
return True