理解countStuart/countKevin代码中索引减法的统计逻辑
Minion游戏代码逻辑解析
1. 为什么用count += length - i而非直接累加?
首先明确这段代码对应的Minion游戏规则:Stuart统计所有以辅音开头的子串数量,Kevin统计所有以元音(A/E/I/O/U,不区分大小写)开头的子串数量,每个符合条件的子串计1分。
length - i的作用是计算以索引i位置字符开头的所有可能子串的总数。举个实际例子:
假设输入字符串是"banana",长度length=6:
- 当
i=0(字符b),以它开头的子串有b、ba、ban、bana、banan、banana,共6个,正好对应6-0=6; - 当
i=1(字符a),以它开头的子串有a、an、ana、anan、anana,共5个,对应6-1=5。
如果直接累加,只能统计符合条件的字符个数,而非每个字符能衍生出的所有子串数量——这完全不符合游戏计分规则,因为每个子串都要算1分,不是每个字符算1分。所以必须用length - i一次性算出当前字符对应的所有有效子串数量,再累加到得分中。
2. minion_game(string)的设计逻辑与行为
这个函数是整个游戏的胜负判定核心,逻辑非常直接:
- 调用
stuart(string)和kevin(string),分别获取两人的总得分; - 对比得分结果:
- 若Stuart得分更高,输出
"Stuart {得分}"; - 若Kevin得分更高,输出
"Kevin {得分}"; - 若两人得分相等,输出
"Draw"。
- 若Stuart得分更高,输出
它的设计完全贴合Minion游戏的胜负规则:谁累计的有效子串数量多,谁获胜;数量相同则平局。整个函数就是对两位玩家的得分结果做一次简单比较,输出对应结论,没有额外复杂逻辑。
内容的提问来源于stack exchange,提问作者B.Parthiban
相关产品推荐
相关产品推荐

