题目描述
给定一个整数 NN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 NN。
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1
123
输出 #1
321
输入 #2
-380
输出 #2
-83
说明/提示
【数据范围】
−1,000,000,000≤N≤1,000,000,000−1,000,000,000≤N≤1,000,000,000
这个题目要求我们对一个整数 NN 进行“数字反转”,并返回反转后的新数。反转后的数应该符合整数的一般规则,即不能有前导零(除非原数本身就是零)。
题目分析:
- 输入是一个整数 NN,其范围在 [−1,000,000,000,1,000,000,000][−1,000,000,000,1,000,000,000] 之间。输入可能是正数、负数或者零。
- 输出是整数 NN 的数字反转结果。反转后新数的最高位不能是零,除非原数就是零。
- 反转规则:
- 对于正整数,反转后去掉前导零。
- 对于负整数,先反转数字,然后保持负号。
- 特殊情况是零,反转后还是零。
解题思路:
-
处理负数:
- 先判断输入的数是否为负。如果是负数,将其变为正数进行处理,然后再在结果中加上负号。
-
数字反转:
- 将数字转换为字符串,然后反转字符串的顺序。
-
去除前导零:
- 反转后的数字字符串可能会有前导零,可以使用整数类型的转换来去除这些零。
代码实现:
代码解析:
-
intToString
:该函数将整数转化为字符串。在反转过程中,它先将整数的每一位数字转为字符,并加到结果字符串中,最后反转字符串得到正确顺序。如果输入的是负数,还会在结果前面加上负号。 -
stringToInt
:该函数将字符串转换回整数。它逐字符地将字符串中的数字转换为整数。如果原字符串有负号,它会处理负数的情况。 -
main
:- 读取输入整数 NN。
- 判断 NN 是否为负数。如果是负数,转换为正数进行处理,最终输出时再加上负号。
- 通过
intToString
将整数转换为字符串,并反转字符串。 - 使用
stringToInt
去除反转后可能产生的前导零,并输出最终结果。
边界情况:
- 零的处理:如果 N=0N=0,反转后结果仍然是 0。
- 负数的处理:负号应保留在最终结果的最前面。