Palindrome Number 判断一个数字是否是回文数字@LeetCode
2013-10-25 03:29
525 查看
思路:
递归比较数字的最低位和最高位,向中间逼夹
package Level2;
/**
*
* Palindrome Number
*
* Determine whether an integer is a palindrome. Do this without extra space.
click to show spoilers.
Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
*/
public class S9 {
public static void main(String[] args) {
System.out.println(isPalindrome(10101));
}
public static boolean isPalindrome(int x) {
int digits = 0;
int tmp = x;
// 算出位数
while(tmp != 0){
tmp /= 10;
digits++;
}
int div = (int) Math.pow(10, digits-1);
return rec(x, div);
}
// 递归比较
public static boolean rec(int x, int div) {
if(x < 0){ // 负数
return false;
}
if(x < 10){ // 一位数
return true;
}
int quotient = x / div; // 最高位
int remainder = x % 10; // 最低位
if(quotient != remainder){
return false;
}
// 更新除数和被除数
return rec((x-quotient*div-remainder)/10, div/100);
}
}
还是用递归,用数组来实现java中的引用传递,在x里从左往右比较,在y里从右往左比较
12321
x-> <-y
public class Solution {
public boolean isPalindrome(int x) {
if(x < 0) {
return false;
}
int[] y = new int[1];
y[0] = x;
return recCompare(x,y);
}
public boolean recCompare(int x, int[] y) {
if(x>=0 && x<=9) {
return true;
}
if(!recCompare(x/10, y)) {
return false;
}
if((x/10)%10 != y[0]%10) {
return false;
}
y[0] /= 10;
return true;
}
}
递归比较数字的最低位和最高位,向中间逼夹
package Level2;
/**
*
* Palindrome Number
*
* Determine whether an integer is a palindrome. Do this without extra space.
click to show spoilers.
Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
*/
public class S9 {
public static void main(String[] args) {
System.out.println(isPalindrome(10101));
}
public static boolean isPalindrome(int x) {
int digits = 0;
int tmp = x;
// 算出位数
while(tmp != 0){
tmp /= 10;
digits++;
}
int div = (int) Math.pow(10, digits-1);
return rec(x, div);
}
// 递归比较
public static boolean rec(int x, int div) {
if(x < 0){ // 负数
return false;
}
if(x < 10){ // 一位数
return true;
}
int quotient = x / div; // 最高位
int remainder = x % 10; // 最低位
if(quotient != remainder){
return false;
}
// 更新除数和被除数
return rec((x-quotient*div-remainder)/10, div/100);
}
}
还是用递归,用数组来实现java中的引用传递,在x里从左往右比较,在y里从右往左比较
12321
x-> <-y
public class Solution {
public boolean isPalindrome(int x) {
if(x < 0) {
return false;
}
int[] y = new int[1];
y[0] = x;
return recCompare(x,y);
}
public boolean recCompare(int x, int[] y) {
if(x>=0 && x<=9) {
return true;
}
if(!recCompare(x/10, y)) {
return false;
}
if((x/10)%10 != y[0]%10) {
return false;
}
y[0] /= 10;
return true;
}
}
相关文章推荐
- LeetCode--判断一个十进制数字是否为回文
- leetcode 9 给一个int类型的数字,判断是否是回文数
- 【华为面试题】给定一个数字(整数),判断它是否回文
- 判断一个字符串是否是“回文”数字
- python判断一个数是否为回文数字
- 判断一个数字是否是回文
- leetcode_9. Palindrome Number 判断一个整数是否是回文串数字
- 判断一个数字是否为回文数
- 判断一个数字是否是回文
- 【LeetCode008-009算法/编程练习C++】string转int(atoi),判断数字是否是回文
- 2. 编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、32
- 判断一个数字是否是回文数字(递归)
- 判断一个数字是否为回文,不使用额外的存储空间
- 判断一个数字是否是回文
- 判断一个数字是否是回文
- [置顶] 判断一个数是否返回回文数,(回文数也是一个数字,即正反序是同一个数)
- 第十一周项目3-6-判断一个数字是否回文
- 作业 4 函数应用 编写一个程序,判断从键盘接收的数字是否为回文数字。回文数字就是顺着看和倒着看是相同的数。如121、656、2332等
- java 编写程序实现从控制台接收一个 5 位以上的整数,使用数组来判断该数字 * 是否是回文数。(例如:789987,12344321是回文数)
- 判断一个数字是否回文数字