LeetCode problem No.9.
No.8 is here.
9. Palindrome Number
https://leetcode.com/problems/palindrome-number/
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1
Input: 121 Output: true
Example 2
Input: -121 Output: false
Example 3
Input: 10 Output: false
Code
object Solution { def isPalindrome(x: Int): Boolean = { val str = x.toString str == str.reverse } }
Methods
- Convert integer to string.
- Make reversed string.
- Compare string and reversed string.
Result
Runtime: 512 ms, faster than 6.09% of Scala online submissions for Palindrome Number. Memory Usage: 55 MB, less than 100.00% of Scala online submissions for Palindrome Number.
Follow up
Coud you solve it without converting the integer to a string?
Code
object Solution { def isPalindrome(x: Int): Boolean = { if(x < 0 || (x%10 == 0 && x != 0)) false else { var num = x var reversed = 0 while(num > reversed) { reversed = reversed*10 + num%10 num = num/10 } num == reversed || num == reversed/10 } } }
Methods
- Initial num is x.
- Initial reversed num is 0.
- Calculate reversed num while reversed num is smaller than num.
- Multiply reversed num by 10 and add remainder of num.
- Divide num by 10.
- If num is equal to reversed num, true.
- if num is equal to reversed num divided by 10, true.
Result
Runtime: 904 ms, faster than 6.09% of Scala online submissions for Palindrome Number. Memory Usage: 54.6 MB, less than 100.00% of Scala online submissions for Palindrome Number.