问题描述
小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)
知识点总结
-
字符串遍历:
- 在Python中,字符串可以像列表一样被遍历,可以使用for循环逐个字符地访问字符串。
- 示例:
for char in string:
-
条件判断:
- 使用if-elif-else语句来判断字符是否属于特定的集合(如'069'或'8')。
- 示例:
if char in '069':或elif char == '8':
-
计数器的使用:
- 通过初始化一个计数器变量,并在满足特定条件时递增,可以有效地统计某些事件的发生次数。
- 示例:
circle_count += 1或circle_count += 2
-
字符串中的数字处理:
- 字符串中的数字可以被当作字符来处理,但也可以转换成整数进行数值运算。
- 示例:
int(char)
拓展知识点
-
字典映射:
- 可以使用字典来映射每个数字到其对应的圆圈数量,这样可以简化代码逻辑。
- 示例:
circle_map = {'0': 1, '6': 1, '9': 1, '8': 2} circle_count=sum(circle_map.get(char, 0) for char in s)
-
字符串方法:
- Python字符串有许多内置方法,如
count()方法可以用来统计某个子字符串在字符串中出现的次数。 - 示例:
s.count('0') + s.count('6') + s.count('9') + 2 * s.count('8')
- Python字符串有许多内置方法,如
-
列表推导式:
- 列表推导式是一种简洁的创建列表的方法,可以用来生成中间结果,再进行进一步处理。
circle_count = sum([1 if char in '069' else 2 if char == '8' else 0 for char in s])
-
正则表达式:
- 正则表达式可以用来匹配字符串中的模式,对于复杂的字符串处理任务非常有用。
import re pattern = r'[069]' circle_count = len(re.findall(pattern, s)) + 2 * s.count('8')