https://leetcode-cn.com/problems/palindrome-number/submissions/
回文数:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例
输入: 121
输出: true
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
这道题我的思路是用递归解决,输入一个数字例如123,将其逆置(递归)后得到321,判断123是否与321相等,如果逆置前后的两个数字相等则说明是回文,否则就不是回文数
具体实现代码如下:
class Solution {
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
int ret = reverse(x,(x + "").length());
if (ret == x){
return true;
}
return false;
}
public int reverse(int num,int level){
if (level == 1){
return num % 10;
}
int ret = num % 10;
for (int i = 0; i < level - 1; i++) {
ret *= 10;
}
return ret + reverse(num/10,--level);
}
}
这个解法有两个巧妙之处
- 我在递归函数中,又带了一个参数代表level,例如12321,它的初始level就是5,每递归一层level-1
- 获取level就是这个数字的长度,我将数字+"",方法获得字符串,从而获取长度.