字符串处理
~~不定时更新🎃,上次更新:2023/02/20
🗡常用函数(方法)
1. s.count(str) --> 计算字符串 s 中有多少个 str
举个栗子🌰
s = "1354111"
print(s.count('1')) # 答案为4
蓝桥例题1-门牌制作🚪
题目描述
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
- 从 1 循环到 2020
- 将每个数字变成字符串
- 利用count统计数字 2
代码
res = 0
for i in range(1,2021):
i = str(i)
res += i.count('2')
print(res)
蓝桥例题2 - 卡片🃏
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?
提示:建议使用计算机编程解决问题。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
关键步骤:1 一定是最早统计完的,因为是从 1 开始,并且两位数中从 10 开始,三位数从 100 开始,所以 1 肯定是先用完的,统计数字 1 即可。
- 从 1 循环到 20210(一个相对大的数)
- 将每个数字变成字符串
- 利用 count 方法 统计数字 1 (这里要有判断语句,我们如果卡片1统计数量 >= 2021时,我们需要谨慎!)
- 卡片数量 == 2021,则说明这个数字刚好把卡片1用完
- 卡片数量 > 2021,则说明这个数字无法完全拼完,即只能拼到这个数字的上一个数字。
代码
num = 0
for i in range(1,20210):
i = str(i)
num += i.count('1')
if num >= 2021:
break
if num == 2021:
print(int(i))
else:
print(int(i)-1)
如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ