> 简洁易懂讲清原理,讲不清你来打我~

输入整数,判断是否为回文数
![在这里插入图片描述](https://img-blog.csdnimg.cn/31fc42b7b482409486d3640ce4616d35.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8af97e2c990f4c929d9d2fd7616dd921.png)
简单的思路
翻转后半段
前半段的最低位作为后半段的最高位
前半段数字不断切除个位,放到后半段的结尾,当前半段小于后半段停止
负数排除

准确的定义
left是前半段的数字
right是后半段的数字的翻转,位数=left位数或者right多一位

```cpp
class Solution {
public:
bool isPalindrome(int x) {
if(x<0)return false;
if(x!=0&&x%10==0)return false;
int left=x,right=0;
while(left>right){
right=right*10+left%10;
left/=10;
}
//x回文且偶位数
if(left==right)return true;
//x回文且奇位数
if(left==right/10)return true;
return false;
}
};
```

踩过的坑

```cpp
//个位为0必须特判
if(x!=0&&x%10==0)return false;
```

1
> 喜欢简洁易懂还能讲清楚原理博客的小伙伴就关注关注这个非常高产的博主呀,下次再会~

posted on 2021-07-24 00:03  offer快到碗里来~  阅读(30)  评论(0)    收藏  举报