for (int i = 0; i < s.length(); i++)
{
if (isdigit(s[i]))
counts[s[i] - '0'] ++;
}
这段代码意味着什么,任何人都能解释这段代码“count [s [i] - '0'] ++;”确切的操作
答案 0 :(得分:5)
counts
是一个十元素数组,用于计算每个数字在s
中出现的次数。
具体做法是:
s[i] - '0'
将'0'
变为0
,将'1'
变为1
等。counts[...]++
递增数组的相应元素。答案 1 :(得分:1)
代码正在计算数字(1-9)
出现在字符串s
中的次数。
请注意。如果'i' - '0'
是i - 0
,则i
与digit
相同。
原因是字符'0' -'9'
具有连续的ASCII值。因此,'i'
和'0'
之间的ASCII值差异为i
;
现在让我们说
string s = "1b21cc55";
和
int count[10] is all zeros
循环中的
我们检查s[i]
,
s[0] = 1 ---> isdigit(1) = yes ----> count[1-0] += 1 ---> count[1] is 1;
s[1] = b ---> isdigit(b) = no ;
s[2] = 2 ---> isdigit(2) = yes ----> count[2-0] += 1; ---> count[2] is 1;
s[3] = 1 ---> isdigit(1) = yes ----> count[1-0] += 1; ---> count[1] is 2;
依旧......
最后count[i]
将告诉您字符串中有多少i
个。
答案 2 :(得分:1)
希望这有帮助。
1)'0'的Ascii值为48
2)每当s [i]是一个数字(在0-9之间)
3)s [i] - '0'评估指数(在0..9之间);
实施例: '1'的Ascii值为49 说s [i]是'1' 那么s [i] - '0'是49-48 = 1
4)count [s [i] - '0'] ++将计算在s [i]中找到特定数字的次数。
答案 3 :(得分:1)
counts
是一个数组。
s[i]
是一个包含ASCII数字的字符。 '0'
,'1'
,
'2'
,...
s[i] - '0'
将它们转换为整数。 1
,2
,3
,...
以上数字表示数组中第n项的索引 - &gt; X
counts[X] ++
增加数组的第X项。