题目要求:
小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。