记今天第二次在LeetCode打卡,今天的题目依旧是Easy等级的哈哈哈,毕竟怕做到难题怕死啃,然后搞坏自己的心情,今天的题目是判断一个数字是不是回文数字
思路
第一步:先把数字通过求余数的方式把它分解成一个个“个位数”,并把他们放在一个数组里面储存,并记录有多少位;
第二步:通过知道了有多少位就可以在数组里面进行左右两头同时向中间遍历,比对左右两边的数字是否相同,一旦不同就可以跳出
代码
class Solution {
public boolean isPalindrome(int x) {
int []a=new int[100];
int s=x,i=0,count=0,left,right,flag=1;
if(x<0)
return false;
if(x<10)
return true;
while(s!=0){
a[i]=s%10;
s=s/10;
i++;
count++;
}
left=0;
right=count-1;
while(left<right){
if(a[left]!=a[right]){
flag=0;
break;
}
left++;
right--;
}
if(flag==1)
return true;
else
return false;
}
}
小心思:
1、一开始不能还在纠结要不要写堆栈来用,但发现有点浪费就直接用数组了
2、最后一开始是直接return flag的,以为int会直接转boolean,结果忘了是直接打1或0才行
最后附上LeetCode的评价图,其实这数据感觉有点夸张哈哈哈
-------------------------------分界线---------------------------------------------------------------------------
刚写完这篇博文,就看到LeetCode的一个人写的算法好厉害,先mark下来
bool isPalindrome(int x)
{
unsigned long int new = 0;
unsigned long int current = x;
while (current != 0)
{
new = (new * 10) + (current % 10);
current /= 10;
}
if (x == new)
return true;
else
return false;
}