题目要求:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
思路:
输入的是整数,首先需要把整数转换为字符数组,挨个比较
注意:比较时,一旦有一组不相等,就可以直接返回false
整数转换为数组:先把整数转变为字符串,创建一个string[] 来存放每一个数字,
然后遍历字符串,把每一个数字依次存放到字符数组里。
注意:需要把int型的整数转成Integer形式才能使用tostring方法
Integer num=x;
String s=num.toString();
String[] arry =new String[s.length()];
for (int i = 0; i < s.length(); i++) {
Character charAt = s.charAt(i);
arry[i]=charAt.toString();
}
比较:按奇数和偶数分开
奇数:找到中间数,然后依次比较两边的数据
i=0;i<(n-1)/2;i++
arry[i].compareTo(arry[s.length()-1-i])!=0
偶数:找中间数,然后依次比较两边的数据
i=0;i<=(n-1)/2;i++
arry[i].compareTo(arry[s.length()-1-i])!=0
补充函数compareTo:
使用方法:
arry[i].compareTo(arry[s.length()-1-i])
两者比较之后会返回一个整数:
- 如果返回=0,则证明两个字符串相同
- 如果返回值>0,则证明arry[i]大于arry[s.length()-1-i]
- 如果返回值<0,则证明arry[i]小于arry[s.length()-1-i]
用“==”和euqals也可进行比较
遇到的问题:
- 在把整数转换为数组的过程中遇到了一个数组下标越界的错误
理由:在创建数组时没有给数组定义长度