首页 > 解决方案 > 无法理解以下代码是如何工作的

问题描述

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;
}

标签: c++string

解决方案


该任务本质上是要求您将字符串中的每个数字替换为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 值,以获得下一个字符。


推荐阅读