1 - 解题思路
2 - 解题方法
3 - 复杂度
4 - Code
目录
1 - 解题思路
将数转换为字符串存放在数组里,依次判断是否为回文。
2 - 解题方法
①设置判断标志flag,当flag=0时,x不是回文,当flag=1时,x是回文。
②分三种情况,第一种x<0,直接可以判断x不是回文;第二种x=0,直接可以判断x是回文;第三种x>0,需要进一步判断。
③利用“/”和“%”,把数转换为字符串存放在数组中,数组最后一个元素的下标是i。
④为方便起见设置j=-1;判断语句a[++j]==a[i-j],当此条件或(j+1!=i-j&&j!=i-j)不满足时跳出循环。
⑤当((j+1==i-j||j==i-j)&&a[j]==a[i-j])满足时即可判断x为回文。
3 - 复杂度
①时间复杂度:O(n)
②空间复杂度:O(n)
4 - code
bool isPalindrome(int x) { int a[100]; int i=0,j=-1,flag=0; if(x<0) flag=0; else if(x==0) flag=1; else { while(x!=0) { a[i++]=x%10; x=x/10; } i--; do { if(a[++j]!=a[i-j]) break; }while(j+1!=i-j&&j!=i-j); if((j+1==i-j||j==i-j)&&a[j]==a[i-j]) flag=1; } if(flag==1) return true; else return false; }