回文数问题
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
方法一:先将整型变为字符型,然后使用字符型中的charAt()浏览首尾字符并进行比较,如果不相同则返回false
将整型转为字符型方法:
String s = String.valueOf(x);
String s1 = Integer.toString(x);
String s2 = ""+ x;
在这里我使用的是第一种
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
String s = String.valueOf(x);
String s1 = Integer.toString(x);
String s2 = ""+ x;
for(int i = 0; i < s.length() / 2; i++){
if(s.charAt(i) != s.charAt(s.length() - i - 1)){
return false;
}
}
return true;
方法二:同样将整型转换成字符型,直接使用reverse()进行反转,将反转后的值与原值进行比较即可。
public boolean isPalindrome(int x) {
if(x < 0){
return false;
}
StringBuilder str = new StringBuilder();
String s = str.append(x).reverse().toString();
int a = Integer.parseInt(s);
if(a == x){
return true;
}
return false;
}
注意:使用第二种方法时应注意int的范围:[-2^31, 2^31 - 1]即
[-2147483648, 2147483647];
比如给定int类型的值为1234567899,则反转后为9987654321,超出范围系统会提示java.lang.NumberFormatException数据异常错误,这时要检查输入输出的整数是否合理。