A1001 A+B Format (20) 字符串处理

一、原题

1001 A+B Format (20 分)
Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where − 1 0 6 ​ ​ ≤ a , b ≤ 1 0 6 -10^6​​ ≤a,b≤10^6 106a,b106 . The numbers are separated by a space.
Output Specification:
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample Input:
-1000000 9
Sample Output:
-999,991

二、题目要点

  1. 属于字符串处理问题
  2. 输入比较简单,通过stoi()容易转换成数字
  3. 输出结果通过to_string()转换为字符串,并需要从尾开始每三位加逗号,而输出计数方法不可用,需要直接在结果字符串上操作

三、过程记录

  • 错误记录
    • 第一次想用for循环处理数组,通过计数器判断是否输出逗号,但是问题在于字符串顺序和要判断的顺序是反的。不过处理了负数的负号问题。
    • 第二次从尾部开始处理,但是输出的顺序和标准顺序是反的
    • 第三次想法是从尾部开始处理,处理结果放在另一个string里,输出再从尾开始,相对麻烦
    • 注意到sring有插入函数,可以从尾部计数,按位置插入逗号。遇到的主要问题是,当前判断和当前处理是在同一个字符串上,所以计数下标在每次插入逗号后实际上已经发生改变,需要多-1,以指向正确的下一个原本字符。处理完成后可以直接输出。

四、源代码

github link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值