友情提醒:
大家好,国庆节快乐呀!假期第二天,不管是出门游玩,还是宅在家,都希望你们过得开心。但要想不虚度这美好假期生活,也可以选择看书、学习新技能来提升自己,充实自己。假期是超越对手的好机会,大家可以试试看。
今天的题目很简单,毕竟大过节的,也不能太放肆,不能太为难自己。 另外,手机预览代码格式不佳的用户可以点击文章底部 查看原文
最后愿你们能静心享受生活,学习提升自己,没有辜负大好时光。
1
题目
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123Output: 321
Example 2:
Input: -123Output: -321
Example 3:
Input: 120Output: 21
Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
2
词汇学习
environment
环境 purpose
目的
3
惊人而又蹩脚的中文翻译
数字转置,就是把一个整数顺序颠倒,要注意越界
4
代码实现-Java
01
解法一
转换成字符串,然后进行字符串转置,可以利用字符数组进行,也可利用StringBuffer 的 reverse()方法
这个题主要的考察点在于数值越界的判断上 真正的转置过程其实并不难
public static int reverse(int x) {
String temp;
// 是否负数
boolean isNegativeNumber = false;
if (x == 0) {
return x;
}
// 数值越界
if (x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) {
return 0;
}
if (x < 0) {
// 负数
isNegativeNumber = true;
x = -x;
}
// 正数
temp = String.valueOf(x);
StringBuilder resultStr = new StringBuilder(temp).reverse();
if (isNegativeNumber) {
temp = "-" + resultStr.toString();
} else {
temp = resultStr.toString();
}
Long res = Long.parseLong(temp);
return (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) ? 0 : Integer.parseInt(res.toString());
}
02
解法2
使用数学知识来解决,通过不断 /10 和 %10 的方式来解决这个问题
public static int reverse_2(int x) {
Long result = 0L;
while (x != 0) {
// 通过不断取余数的方式得到该值得最后一位数字
result = result * 10 + x % 10;
// 不断取整的方式缩小这个目标数字
x /= 10;
}
return (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) ? 0 : Integer.parseInt(result.toString());
}
5
代码实现-Python
01
解法一
同java版本解法二一样,循环通过对10取模得到尾部数字,一步步乘10构造新的翻转后的整数即可。
但是要注意首先判断数值的正负,最后还要判断结果是否溢出。
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
flag = 1 if x >= 0 else -1
new_x, x = 0, abs(x)
while x:
new_x = 10 * new_x + x % 10
x /= 10
new_x = flag * new_x
return new_x if new_x < 2147483648 and new_x >= -2147483648 else 0
02
解法二
利用Python的字符串反转操作来实现对整数的反转,反转后的字符串要重新转换为整数。同样的道理,要注意正负和溢出情况。
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
x = int(str(x)[::-1]) if x >= 0 else - int(str(-x)[::-1])
return x if x < 2147483648 and x >= -2147483648 else 0
以上代码会同步更新在本人的Github和CSDN上
Github地址:https://github.com/Bylant/LeetCode