No.009:Palindrome Number
Posted Gerrard_Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No.009:Palindrome Number相关的知识,希望对你有一定的参考价值。
问题:
Determine whether an integer is a palindrome. Do this without extra space.
官方难度:
Easy
翻译:
不使用额外空间,判断一个数是不是回文形式。
- 暂定负数不参与讨论。
- 先获取数值长度,取得对应位置的数字比较。
- 重点是如何取到一个整数指定位置的数字,通过(x/Math.pow(10,n-1))%10来实现。
- 循环至一半就可以退出。
解题代码:
1 public static boolean isPalindrome(int x) { 2 // 负数不在讨论范围内 3 if (x < 0) { 4 return false; 5 } 6 int length = String.valueOf(x).length(); 7 // 低位/高位 8 int low; 9 int high; 10 // 循环至一半就可以退出 11 for (int i = 1; i < length / 2 + 1; i++) { 12 // low+high=length+1 13 low = getNFromLow(i, x); 14 high = getNFromLow(length + 1 - i, x); 15 if (!(low == high)) { 16 return false; 17 } 18 } 19 return true; 20 } 21 22 // 获取数字x,自低位起的第n个数 23 private static int getNFromLow(int n, int x) { 24 return (int) ((x / Math.pow(10, n - 1)) % 10); 25 }
相关链接:
https://leetcode.com/problems/palindrome-number/
PS:如有不正确或提高效率的方法,欢迎留言,谢谢!
以上是关于No.009:Palindrome Number的主要内容,如果未能解决你的问题,请参考以下文章