洛谷-P1307 [NOIP2011 普及组] 数字反转

题目描述

给定一个整数 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 进行“数字反转”,并返回反转后的新数。反转后的数应该符合整数的一般规则,即不能有前导零(除非原数本身就是零)。

题目分析:

  1. 输入是一个整数 NN,其范围在 [−1,000,000,000,1,000,000,000][−1,000,000,000,1,000,000,000] 之间。输入可能是正数、负数或者零。
  2. 输出是整数 NN 的数字反转结果。反转后新数的最高位不能是零,除非原数就是零。
  3. 反转规则
    • 对于正整数,反转后去掉前导零。
    • 对于负整数,先反转数字,然后保持负号。
    • 特殊情况是零,反转后还是零。

解题思路:

  1. 处理负数

    • 先判断输入的数是否为负。如果是负数,将其变为正数进行处理,然后再在结果中加上负号。
  2. 数字反转

    • 将数字转换为字符串,然后反转字符串的顺序。
  3. 去除前导零

    • 反转后的数字字符串可能会有前导零,可以使用整数类型的转换来去除这些零。

代码实现:

代码解析:

  1. intToString:该函数将整数转化为字符串。在反转过程中,它先将整数的每一位数字转为字符,并加到结果字符串中,最后反转字符串得到正确顺序。如果输入的是负数,还会在结果前面加上负号。

  2. stringToInt:该函数将字符串转换回整数。它逐字符地将字符串中的数字转换为整数。如果原字符串有负号,它会处理负数的情况。

  3. main

    • 读取输入整数 NN。
    • 判断 NN 是否为负数。如果是负数,转换为正数进行处理,最终输出时再加上负号。
    • 通过 intToString 将整数转换为字符串,并反转字符串。
    • 使用 stringToInt 去除反转后可能产生的前导零,并输出最终结果。

边界情况:

  1. 零的处理:如果 N=0N=0,反转后结果仍然是 0。
  2. 负数的处理:负号应保留在最终结果的最前面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值