c++ - 无法理解以下代码是如何工作的
问题描述
https://leetcode.com/contest/biweekly-contest-51/problems/replace-all-digits-with-characters/ 我试图解决这个问题,但我无法这样做,所以我查看了讨论,我能够找到答案,但我仍然无法理解代码的第三行如何给我输出。我知道这是一个非常基本的疑问,但我无法得到它。请帮忙
string replaceDigits(string s) {
for (auto i = 1; i < s.size(); i += 2)
s[i] += s[i - 1] - '0';
return s;
}
解决方案
该任务本质上是要求您将字符串中的每个数字替换为shift(s[i-1], s[i])
.
因此,对于每个奇数索引i
,您将s[i]
一个字符转换为一个整数(通过减去'0'
)并将其添加到前一个字符s[i-1]
。第三行的另一种写法是这样的:
s[i] = s[i-1] + (s[i] - '0');
如果s[i]
是'1'
,那么s[i] - '0'
是1
。然后,我们将该整数添加到前一个索引处字符的 ASCII 值,以获得下一个字符。
推荐阅读
- r - 在指定多个核心的 slurm 作业中,我如何确定实际使用了多少核心/CPU?
- python - 保存 sklearn 模型管道时的 pickle 替代品
- angular - 在 Asp.net MVC 3 项目中引用和使用 Angular 5+ 组件
- mysql - 创建一个查询 SELECT 然后从找到的结果中插入
- python - 加载标题后如何使python selenium关闭浏览器?
- javascript - jQuery/css 让两个 div 显示在同一行
- php - preg_replace 到 php
- c++ - 如何在 SDL2 文本输入中禁用键重复
- javascript - 在所有主题名称字段上显示错误
- validation - 更新验证器插件管理器以实现自定义