Reverse Integer
反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。 32 位有符号整数,其数值范围是 [−231, 231 − 1],c语言的宏定义有INT_MAX和INT_MIN,如果反转后的整数溢出,则返回 0。
int reverse(int x) { }
测试用例:
输入: 123 输出: 321 输入: -123 输出: -321 输入: 120 输出: 21 输入: 1234567899 输出: 0
解法:
int reverse(int x) { //对边界条件先进行处理 便于后面的编码 if (x == 0) { return 0; } //首先对x进行处理 负数当作正数进行处理方便 int flash = 0; if (x < 0) { flash = 1; x = -x; } //将整数x转换成字符串进行处理 主要是方便 char str[128] = { 0 }; sprintf(str, "%d", x); //反转的时候 比如120反转后应该是21 所以要把末尾的0去掉 int len = strlen(str); int i = len - 1; while (str[i] == '0') { //str[i] = '\0'; i--; } //将原来的低位数字作为高位 //使用long来保存可能溢出的结果,再与最大/最小整数相比较 long res = 0; while (i >= 0) { res *= 10; res += str[i] - '0'; i--; } //如果x本来是负数,返回的时候也应该是负数 if (flash != 0) { res = -res; } //这里用来判断溢出 对溢出进行处理 if (res > INT32_MAX || res < INT32_MIN) { res = 0; } return res; }
https://leetcode-cn.com/problems/reverse-integer/description/

浙公网安备 33010602011771号