😄😊😆😃😄😊😆😃
开始cpp刷题之旅。
目标:执行用时击败90%以上使用 C++ 的用户。
7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
解题:
有两种解法
法一:转字符串进行反转操作,但是要注意尾部含0的情况。
法二:使用取余操作。
我使用第二种方法去完成,本题要注意判断翻转后的数字是否超过了上下限。
题中有提到,超过上下限直接返回0即可。
注意:2^31= 2147483648。
即答案范围要在【-2147483648,2147483647】中,双闭区间。
class Solution {
public:int reverse(int x) {int res= 0;while (x != 0) {int pop = x % 10;x /= 10;if (res> INT_MAX/10 || (res== INT_MAX / 10 && pop > 7)) return 0;if (res< INT_MIN/10 || (res== INT_MIN / 10 && pop < -8)) return 0;res= res* 10 + pop;}return res;}
};
看一下提交记录:
perfect!