给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false
提示:
-231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
解题要点
懒得考虑了,就专成字符串
public class Test8 {
/**
* 这里直接当作是字符串处理即可,难度系数完全比不上回文子串:简单是简单,为啥击败的人这么少,感觉已经是极致了呀
* 执行用时:20 ms, 在所有 Java 提交中击败了6.98%的用户内存消耗:37.7 MB, 在所有 Java 提交中击败了75.97%的用户
*/
public boolean isPalindrome(int x) {
String str = x+"";
//二分即可
int length = str.length();
if(length==1) {
return true;
}
int left=0;
int right = length-1;
while(left<right){
//回文的特性就是第一位等于最后一位,以此类推即可
if(str.charAt(left++)!=str.charAt(right--)) {
//如果不等于
return false;
}
}
return true;
}
public static void main(String[] args) {
System.out.println(new Test8().isPalindrome(121));
System.out.println(new Test8().isPalindrome(-121));
System.out.println(new Test8().isPalindrome(10));
System.out.println(new Test8().isPalindrome(-101));
System.out.println(new Test8().isPalindrome(11));
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。