数字字符串中圆圈的数量计算 | 豆包MarsCode AI刷题

127 阅读2分钟
  1. 题目分析 题目要求我们在给定的一串数字字符串中,统计其中包含的“圆圈”数量。“圆圈”的定义如下: 数字069各含一个圆圈; 数字8含有两个圆圈; 其他数字不含圆圈。 目标是设计一个方法,接收一个字符串参数,返回总的圆圈数目。

  2. 难点分析 本题主要挑战在于如何识别并计数各个数字中的圆圈,特别是要注意到某些数字如8具有特殊的圆圈数量。难点还在于有效率地处理字符串数据类型,以及合理组织代码结构使其易于理解和维护。

  3. 解题思路 为了达成目标,我们首先需要遍历字符串中的每一个字符。然后,根据字符对应的不同数字,确定应累加至最终结果的圆圈数。具体策略如下: 定义一个累积器变量,初始设为零。 使用循环结构(如for-each循环)遍历字符串中的每个字符。 根据字符的不同,使用switch-case或其他选择结构来判断并增加累积器变量。 对于069,每次遇见增加累积器变量1次;对于8,增加2次。 循环结束后,累积器变量的值即为所求的结果。

  4. 关键步骤与细节 步骤说明 初始化:定义一个整型变量circleCount来记录圆圈的总数,初始设为0。 解析字符:使用toCharArray()方法转换字符串为字符数组,便于逐字符处理。 遍历字符:用for-each循环遍历字符数组。 匹配与累加:使用switch-case结构根据字符确定每次迭代应累加的圆圈数。 实现细节 确保所有可能的数字都被考虑(通过default标签捕捉非指定数字)。 处理边界情况,比如空字符串或全是由无圆圈数字构成的字符串。 5.具体代码实现

    public static int solution(String s) { // write code here int circleCount = 0; for (char c : s.toCharArray()) { switch (c) { case '0': case '6': case '9': circleCount += 1; break; case '8': circleCount += 2; break; default: // 其他数字没有圆圈 break; } } return circleCount; }

6.总结 综上所述,我们的解法遵循了问题的具体需求,通过一次遍历就能得出所需答案。利用switch-case结构使得代码清晰易懂,易于扩展和维护。此解法简单高效,适合处理任意长度的字符串,并能准确计算出圆圈的总数量。