バイトジャンプ校正----プログラミング問題2(Python)
1475 ワード
一、テーマ
タイトルの説明
「a」と「b」の2つの文字のみを含む文字列sがあり、長さはnであり、操作のたびに1つの文字を1回変換することができる(1つの「a」を「b」に設定するか、1つの「b」を「a」に設定する).しかし、操作回数に上限mがあり、限られた操作数の範囲内で、最大連続する同じ文字のサブストリングの長さがどのくらい得られるかを問う.
説明を入力:
出力の説明:
例1
入力
しゅつりょく
説明
二、分析及びコード
題意:aとbからなる文字列を1列与えて、m個のアルファベットを変換することができて、変化した後に連続して同じ文字の最大の長さを求めます
解析:文字aと文字bの存在するメタインデックスをそれぞれ抽出し、max=max(p_a[i+m]-p_a[i-1]-1)とする.ノートに絵を描くとこの道理がわかる.コードは次のとおりです.
タイトルの説明
「a」と「b」の2つの文字のみを含む文字列sがあり、長さはnであり、操作のたびに1つの文字を1回変換することができる(1つの「a」を「b」に設定するか、1つの「b」を「a」に設定する).しかし、操作回数に上限mがあり、限られた操作数の範囲内で、最大連続する同じ文字のサブストリングの長さがどのくらい得られるかを問う.
説明を入力:
n , m (1<=m<=n<=50000), n ’a’ ’b’ s。
出力の説明:
m , ’a’ ’b’ 。
例1
入力
8 1
aabaabaa
しゅつりょく
5
説明
'b' 'b' 'a', 5 'a' 。
二、分析及びコード
題意:aとbからなる文字列を1列与えて、m個のアルファベットを変換することができて、変化した後に連続して同じ文字の最大の長さを求めます
解析:文字aと文字bの存在するメタインデックスをそれぞれ抽出し、max=max(p_a[i+m]-p_a[i-1]-1)とする.ノートに絵を描くとこの道理がわかる.コードは次のとおりです.
[n, m] = [int(x) for x in input().split(' ')]
s = input()
a=s.count('a')
b=s.count('b')
res = 0
p_a = [-1] # -1
p_b = [-1]
for i in range(n): # a b
if s[i]=='a':
p_a.append(i)
else:
p_b.append(i)
if m>=a or m>=b:
res = n
else:
res=0
for i in range(1,len(p_a)):
if i+mres:
res=maxlen
else:
break
for i in range(1,len(p_b)):
if i+mres:
res=maxlen
else:
break
print(res)