题目:力扣https://leetcode-cn.com/problems/palindrome-number/
class Solution {
public boolean isPalindrome(int x) {
String s = new String(String.valueOf(x));
char[] array = s.toCharArray();
int left=0;
int right=s.length()-1;
if(array[left]=='-'){
return false;
}
while(left<right){
if(array[left]!=array[right]){
return false;
}
left++;
right--;
}
return true;
}
}
思路:经历了前几道题的洗礼之后,这题如果仅仅追求AC的话确实是一道简单题。 大概思路是,先把int类型的对象x通过String.ValueOf(x)转化为String类型,然后通过.toCharArray()将其转化为字符数组。判断是否为回文之前,先判断是否有‘-’号,若有即可直接返回false。如果没有‘-’,只需要两个索引,头尾对应的对比其字符是否一样,若发现不一样,则可以返回false,若两个索引走到了一起仍然没有发现两两不一的字符,则表示该字符串是回文,返回true。
1.将int类型对象x转化为字符数组char[] array。中间需要通过一个String类型过渡。
String s = new String(String.valueOf(x));
char[] array = s.toCharArray();
2.设置两个索引分别为left,right。left在头,righ在尾。
int left=0;
int right=s.length()-1;
3.判断是否有‘-’号。若有直接判断其不是回文。
if(array[left]=='-'){
return false;
}
4.头尾一一比对。若字符一样,则left右移,right左移,直至left与right相遇或者它们对应位置的字符不一样时停止。发现两两字符不一样的,直接返回false。
while(left<right){
if(array[left]!=array[right]){
return false;
}
left++;
right--;
}
5.如果顺利通过上述循环,则表示该串字符是回文,直接返回true即可。
return true;