C ++编程代码计数[s [i] - '0'] ++;

时间:2013-04-09 07:06:57

标签: c++

for (int i = 0; i < s.length(); i++)
{
   if (isdigit(s[i]))
   counts[s[i] - '0'] ++;
}

这段代码意味着什么,任何人都能解释这段代码“count [s [i] - '0'] ++;”确切的操作

4 个答案:

答案 0 :(得分:5)

counts是一个十元素数组,用于计算每个数字在s中出现的次数。

具体做法是:

  • s[i] - '0''0'变为0,将'1'变为1等。
  • counts[...]++递增数组的相应元素。

答案 1 :(得分:1)

代码正在计算数字(1-9)出现在字符串s中的次数。

请注意。如果'i' - '0'i - 0,则idigit相同。 原因是字符'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'将它们转换为整数。 123,...

  • 以上数字表示数组中第n项的索引 - &gt; X

  • counts[X] ++增加数组的第X项。