去一个个长度为N的子串里找字母并计数,放入字典,最后排序
while True:
try:
sstr=input()
N=int(input())
adict={}
for i in range(len(sstr)+1-N):#因为range取不到最大的,所以要加1
subs=sstr[i:i+N]
sum=subs.count("G")+subs.count("C")
if sum not in adict.values():#该句不可省,必须去重字典无序,排序后更不可预见哪个在前
adict[subs]=sum
alist=sorted(adict.items(),key=lambda stu:(stu[1]))
print(alist[-1][0])
except:
break
稍微改进一下,主要涉及排序的方法,因为sorted函数是稳定排序,即相同的值原来在前面的排序后还在前面,可以利用这一点少写一些代码,注意与上面例子比较
while True:
try:
sstr=input()
N=int(input())
adict={}
for i in range(len(sstr)+1-N):#因为range取不到最大的,所以要加1
subs=sstr[i:i+N]
sum=subs.count("G")+subs.count("C")
# if sum not in adict.values():#可以省略该句
adict[subs]=sum
alist=sorted(adict.items(),key=lambda stu:(stu[1]),reverse=True) #稳定排序,逆序排序,可以预见到大数始终在前
print(alist[0][0])
except:
break