1 问题描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2 解决方案
我的解答:
class Solution {
public boolean isPalindrome(int x) {
StringBuilder str = new StringBuilder(String.valueOf(x));
// StringBuilder num = new StringBuilder(String.valueOf(x));
str.reverse();
if(x >= 0){
int num = (int)Long.parseLong(str.toString());
return (num == x);
}else{
StringBuilder num = new StringBuilder(String.valueOf(x));
return num.equals(str);
}
// return num.equals(str);
}
}
小注:第一次刷题,算法的时间复杂度尚且不是完美的,以后还需要大量的练习不断地去完善。
易错点:
对于复合数据类型之间进行equals()
比较,在没有覆写equals()
方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object
的equals()
方法也是用双等号进行比较的,所以比较后的结果跟双等号的结果相同。