给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
(发现我的方法比较简单粗暴。。之后可以挑战一下进阶的方法。 )
-
class Solution { public boolean isPalindrome(int x) { /* 分析: 一种方法是: 先将该数字转化为字符串形式,在转化为字符数组形式 返回该数组的长度(这样便可知该数字是几位数) 然后从两端比对数组元素 */ //需要先转化为Integer类型,不然会报错:int cannot be dereferenced Integer num = x; //把数字转化为字符串形式 String str = String.valueOf(num); //将字符串转化为字符数组 char[] arr = str.toCharArray(); //定义一个boolean类型变量,用于接收最后的结果 boolean isHuiShu = true; //定义for循环,遍历数组,并比较元素大小 for(int i = 0;i < arr.length/2;i++){ //从两端依次比较元素 if(arr[i]!=arr[arr.length-1-i]){ //如果其中两个元素不相同,则将isHuiShu改为false; isHuiShu = false; break; } } //返回结果 return isHuiShu; } public static void main(String[] args){ //创建对象 Solution s1 = new Solution(); //调用isPalindrome()方法,并定义一个变量,用于接收结果 boolean result = s1.isPalindrome(12321); //输出 System.out.println(result); //true Solution s2 = new Solution(); boolean result1 = s2.isPalindrome(12345); System.out.println(result1); //false } }