今天的题目很简单,难度级别也是"Easy",所以就添加了一些附加条件...
题目:传入一个整数int x,判断x是否是回文数(就是从左往右看和从右往左看是一样的)
注:
- 不能额外开辟空间(不能使用malloc,calloc等)
- 负数不是回文数
- 考虑溢出问题
老样子,上代码
bool isPalindrome(int x) {
//负数,返回false
if (x < 0) return false;
//大于0的1位数本身就是回文数
if (x < 10) return true;
//sum为从右往左记录,temp临时变量
int sum = 0,temp = x;
//当temp不为0时继续循环
while (temp) {
//处理越界
if (sum >= (INT32_MAX / 10)) return false;
//记录
sum = sum * 10 +temp%10;
temp /= 10;
}
//如果从右往左看等于从左往右看,就是回文数
if (sum == x) return true;
else return false;
}
方法有很多,比如还可以首尾直接比较,但首尾直接比较要通过log10()函数获取位数,有兴趣的小伙伴可以写下比比效率。
网友评论