标签:tps 数字 工作 png 内容 去除 总结 ali 完成
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number
将数字分为四组:小于0;0-9;大于9;溢出部分。
class Solution {
public:
bool isPalindrome(int x) {
long y=0,t;
t=x;
if(x<0){
return false;
}
else if(x>=0&&x<10){
x=2;
}
else {while(x){
y=y*10;
if(y<=INT_MIN||y>=INT_MAX)
return false;
y=y+x%10;
x=x/10;
};
if(y==t){
x=2;
}else
return false;
}
return x==2 ;
}
};
如果对整数进行全部反转,需要考虑溢出问题,而且做了不必要的工作。只需要翻转一部分即可完成对比。
当数字长度为奇数时,我们可以通过y / 10,去除处于中间位置的数字。
比如:当输x=23432时,反转后的y=234,此时y/10,得到23,比较y和修改后的x是否相等,相等即为回文数
class Solution {
public bool IsPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int y = 0;
while(x > y) {
y = y * 10 + x % 10;
x /= 10;
}
return x == y || x == y/10;
}
};
执行时间:12ms;
内存消耗:8.1MB
考虑问题不只有一种方法,要多方面考虑,要简化问题。
标签:tps 数字 工作 png 内容 去除 总结 ali 完成
原文地址:https://www.cnblogs.com/HanLongfeng/p/11877557.html