1、题目名称:贝博士发奖金
贝博士的助手艾小姐工作很辛苦,他想要时不时地给她发点奖金。于是贝博士规定:从报纸上随机取一段话,去掉所有的空格和标点,并把所有的字母替换成大写构成一个字符串。如果这个字符串中包含字母Q(贝博士最喜欢的字母)或是字母B(贝博士的首字母)的个数大于或等于A(艾小姐的首字母)的个数,就给艾小姐发奖金。
import re
str=input()
str=re.sub(r'[^a-zA-Z]','',str)
str=str.upper()
if str.count('Q')>0:
print(1)
else:
if str.count('B')>=str.count('A'):
print(1)
else:
print(0)
思路是通过正则只保留字符串中的字母后通过upper()函数将字符串转变为只包含大写字母的字符串,然后利用count()函数根据题目条件if判断即可
2、题目名称:Ctrl+X,Ctrl+V
对于给定的一个仅由A和B组成的字符串,通过选定从某一位置开始到结束的部分并执行剪切(Ctrl+X),然后粘贴(Ctrl+V)到该字符串的开始位置,使得形成的新字符串中连续的A数量最多。
s=input()
max_len=0 # 保留最大连续A的长度
start_len=0 # 开头连续A的长度
end_len=0 # 结尾连续A的长度
cur_len=0 # 缓存长度
flag=0 # 当遇上第一个B时变为0,方便保留开头连续A的长度
for i in range(0,len(s)):
if s[i]=='A':
cur_len+=1
else:
if flag==1:
max_len=max(max_len,cur_len)
cur_len=0
else:
start_len=cur_len
flag=1
max_len=max(max_len,cur_len)
cur_len=0
if i==len(s)-1 and s[i]=='A':
end_len=cur_len
max_len=max(max_len,cur_len)
# 考虑全是A的特殊情况
if max_len==len(s):
print(len(s))
else:
if start_len+end_len>max_len:
print(start_len+end_len)
else:
print(max_len)
思路是判断(当前A的最大连续长度)与(结尾连续A的长度+开头连续A的长度)的值的大小,最后考虑一下全是A的特殊情况即可。
编程小白初次尝试竞赛,代码简陋,欢迎大家评论指导。