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

153 阅读2分钟

问题描述

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

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

测试样例

样例1:

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

样例2:

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

样例3:

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

思路:

通过遍历字符串中的每个字符,并根据字符的不同情况累加圆圈数量来实现。 如果遇到069三个数字中的任意一个,则计数器+1,遇到数字8则计数器+2.
巧用python字符串可以遍历元素的特性,实现题目要求。

代码实现:

def solution(s: str) -> int:
    circle_count = 0
    for char in s:
        if char in '069':
            circle_count += 1
        elif char == '8':
            circle_count += 2
    return circle_count

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

知识点总结

  1. 字符串遍历

    • 在Python中,字符串可以像列表一样被遍历,可以使用for循环逐个字符地访问字符串。
    • 示例:for char in string:
  2. 条件判断

    • 使用if-elif-else语句来判断字符是否属于特定的集合(如'069'或'8')。
    • 示例:if char in '069': 或 elif char == '8':
  3. 计数器的使用

    • 通过初始化一个计数器变量,并在满足特定条件时递增,可以有效地统计某些事件的发生次数。
    • 示例:circle_count += 1 或 circle_count += 2
  4. 字符串中的数字处理

    • 字符串中的数字可以被当作字符来处理,但也可以转换成整数进行数值运算。
    • 示例:int(char)

拓展知识点

  1. 字典映射

    • 可以使用字典来映射每个数字到其对应的圆圈数量,这样可以简化代码逻辑。
    • 示例:
    • circle_map = {'0': 1, '6': 1, '9': 1, '8': 2} circle_count=sum(circle_map.get(char, 0) for char in s)
  2. 字符串方法

    • Python字符串有许多内置方法,如 count() 方法可以用来统计某个子字符串在字符串中出现的次数。
    • 示例:s.count('0') + s.count('6') + s.count('9') + 2 * s.count('8')
  3. 列表推导式

    • 列表推导式是一种简洁的创建列表的方法,可以用来生成中间结果,再进行进一步处理。
    • circle_count = sum([1 if char in '069' else 2 if char == '8' else 0 for char in s])
  4. 正则表达式

    • 正则表达式可以用来匹配字符串中的模式,对于复杂的字符串处理任务非常有用。
    • import re pattern = r'[069]' circle_count = len(re.findall(pattern, s)) + 2 * s.count('8')