From : www.LintCode.com
描述
判断一个正整数是不是回文数。
回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。
注意
给的数一定保证是32位正整数,但是反转之后的数就未必了。
如果一个数是回文数,那么它一定可以反转,因为反转后还是它本身。
如果一个数不是回文数,那么就不一定了,可能反转后会超出整数的取值范围。
样例11, 121, 1, 12321 这些是回文数。
23, 32, 1232 这些不是回文数。
解决方案一
此题与LeetCode中的一题很相似。参见ReverseInteger
解决思路:
首先,先将该整数转为字符串。
然后,通过StringBuilder的reverse方法反转该字符串,
将该字符串转为整数,若发生异常,说明超出取值范围,肯定不是回文数,返回FALSE。
若正常转换,则比较转换后的整数是否等于参数整数。
若相等,说明是回文数,返回TRUE。
否则,返回FALSE。
代码实现(JAVA)
public class Solution {
/*
* @param num: a positive number
* @return: true if it's a palindrome or false
*/
public boolean isPalindrome(int num) {
// write your code here
//将该整数转为String字符串
String nStr = num + "";
//取得该字符串的反转
String s = new StringBuilder(nStr).reverse().toString();
Integer m = 0;
//将反转后的字符串转为整数,若转换失败,则说明超出取值范围,返回FALSE
try {
m = Integer.parseInt(s);
} catch (Exception e) {
return false;
}
//若num与m相等,则是回文数,返回TRUE
if (num == m){
return true;
}
return false;
}
}
总结
本题与LeetCode中的ReverseInteger很相似。
只是ReverseInteger要求将整数进行反转。
而本题则是要求判断该整数是否可以反转。