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

162 阅读2分钟

题目要求:

小I拿到了一串数字字符,她想知道这串数字中一共有多少个圆圈。具体规则如下:

数字0、6、9各含有一个圆圈。 数字8含有两个圆圈。 其他数字不含有任何圆圈。

测试样例:

样例一:

输入:s = "1234567890" 输出:5

样例二:

输入:s = "8690" 输出:5

样例三:

输入:s = "1111" 输出:0

题目难度:简单

解题语言:python

解题思路:

首先要统计字符串中每个数字的圆圈数量:

数字0、6、9各含有一个圆圈; 数字8含有两个圆圈; 其他数字不含有任何圆圈。

然后需要初始化一个字典,存储每个数字对应的圆圈数量。 再遍历输入字符串中的每个字符。 最后对于每个字符,查找字典中对应的圆圈数量,并累加到总数中。

细节解释:

为什么要用字典储存数量?其优点是什么?

优点一:

可以实现快速查找的功能:字典(或哈希表)提供了常数时间复杂度的查找操作,这意味着无论字典中有多少项,查找一个特定数字的圆圈数量都是快速的。

优点二:

代码简洁:通过使用字典,你可以将每个数字与其对应的圆圈数量关联起来,这样在遍历输入字符串时,可以直接通过字典查找每个字符对应的圆圈数量,而不需要使用复杂的条件判断。

优点三:

易于维护:如果题目规则发生变化(例如新增或修改某个数字的圆圈数量),你只需要更新字典中的对应项,而不需要修改遍历和累加的逻辑。

所以,综上所述,使用字典来存储每个数字的圆圈数量,可以提高代码的效率和可维护性。通过字典,你可以快速查找每个数字的圆圈数量,并且代码逻辑更加简洁明了。

作答代码:

def solution(s: str) -> int:

circle_count = {
    '0': 1,
    '1': 0,
    '2': 0,
    '3': 0,
    '4': 0,
    '5': 0,
    '6': 1,
    '7': 0,
    '8': 2,
    '9': 1
}


total_circles = 0


for char in s:
   
    total_circles += circle_count[char]


return total_circles

if __name__ == '__main__':
print(solution(s = "1234567890") == 5)
print(solution(s = "8690") == 5)
print(solution(s = "1111") == 0)

重点解释:

1.初始化字典:circle_count 字典存储每个数字对应的圆圈数量: //ircle_count = { '0': 1, '1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 1, '7': 0, '8': 2, '9': 1 }

2.遍历字符串:使用 for 循环遍历输入字符串 s: //for char in s:

3.累加圆圈数量:对于每个字符,累加其对应的圆圈数量到 total_circles。