LeetCode No.7 整数反转

这道题难度不大,但是对于考虑溢出的题型很有参考价值。

int reverse(int x) {
	int m, res = 0;
	while (x != 0) {
		m = x % 10; //余数
		x /= 10;
		//乘以10之前就进行判断,否则可能溢出
		if (res > INT_MAX / 10 || (res == INT_MAX && m > 7)) return 0;
		if (res < INT_MIN / 10 || (res == INT_MIN && m <-8)) return 0;
		res = res * 10 + m;
	}
	return res;
}

拓展:
在<limits.h>头文件中定义如下的宏,用于表示各类型的限值。

#define CHAR_BIT      8         // number of bits in a char
#define SCHAR_MIN   (-128)      // minimum signed char value
#define SCHAR_MAX     127       // maximum signed char value

#define CHAR_MIN    SCHAR_MIN   // mimimum char value
#define CHAR_MAX    SCHAR_MAX   // maximum char value

#define SHRT_MIN    (-32768)        // minimum (signed) short value
#define SHRT_MAX      32767         // maximum (signed) short value
#define USHRT_MAX     0xffff        // maximum unsigned short value
#define INT_MIN     (-2147483647 - 1) // minimum (signed) int value
#define INT_MAX       2147483647    // maximum (signed) int value
#define UINT_MAX      0xffffffff    // maximum unsigned int value
#define LONG_MIN    (-2147483647L - 1) // minimum (signed) long value
#define LONG_MAX      2147483647L   // maximum (signed) long value
#define ULONG_MAX     0xffffffffUL  // maximum unsigned long value
#define LLONG_MAX     9223372036854775807i64    // maximum signed long long int value
#define LLONG_MIN (-9223372036854775807i64 - 1) // minimum signed long long int value
#define ULLONG_MAX    0xffffffffffffffffui64  // maximum unsigned long long int value

类似题目:9. 回文数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值