思路
由题目描述先记录一下正负号,把数字都变为正数,再用取余运算,将数字倒过来就行了。
@TOC
1.题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
##数据范围为(-2的31次方)到(2的31次方-1)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
2.思路
由题目描述先记录一下正负号,把数字都变为正数,再用取余运算,将数字倒过来就行了。
3.代码实现
1 | class Solution { |
4.其他细节
一.符号
一开始想判断完符号,如果是负数直接输出负号,试了一次发现leetcode上将stdout(cin cout)输出的东西和return的值分开了,所以必须将最后的值变为负数,不能把符号和数分开,一起返回才行。
二.数据溢出
因为int型数据范围为(-2的31次方)到(2的31次方-1)-2147483648~+2147483647
如果是输入int型最大值2147483647,反转后为7463847412超过了int能表示的最大值,所以不能用int型,
long long型为(-2的63次方)到(2的63次方-1)-9223372036854775808~+9223372036854775807,所以用long long型就不会溢出了。
-------------本文结束感谢您的阅读-------------