032の連続した学校の募集は、同じ文字列を行使Zhenti(見出し)

連続同じ文字列(2番組タイトル)

タイトルは、説明
のみS「A」および「B」は2文字の長さを含む文字列をnと、各操作が「」「B」に、またはそれに一度に文字変換(行うことができ「B」は「A」)に設定され、操作の数が、数の限られた動作範囲内で求め上限mを有し、サブストリングの長さは最大連続同一文字を得ることが可能です。

入力説明
二つの整数の最初のラインN、M(1 <= M <= N <= 50000)、 及び長さの2行目のnだけ'A'と文字列sの'B'を含みます。

説明出力
Mを超えることなく動作の出力の数は、最大連続全長に'完全または部分「B」サブストリングを得ることが可能です。

 

図1は、 DEF(変更文字列、目標、M、N):
 2      左= 0 
3      チェンジ= []を
 4      changecount = 0 
5      MAXLEN = 0 
6      I、J = 00 
7      ながら、 iは< N:
 8          であれば 、文字列 [I] == 対象:
 9              、I + = 1 
10          11              であれば changecount < M:
 12                  changecount + = 1 
13                 changelist.append(I)
 14                  、I + = 1 
15              16                  curleng = I - 17を                 場合 curleng> MAXLEN:
 18                      MAXLEN = curleng
 19                  左=チェンジ[J] + 1 
20                  J + = 1 
21                  changecount - = 1 
22      もし lenの(チェンジ)> J:
 23          curleng = N - 24          なら curleng> MAXLEN:
 25             MAXLEN = curleng
 26      リターンmaxlenを
 27  
28  DEFメイン():
 29      ARY1 =リスト(マップ(INT 。、入力()スプリット()))
 30      N、M = ARY1 [ 0 ]、ARY1 [ 1 ]
 31       = 入力( ).strip()
 32      C1 =変化(文字列' B ' 、M、N)
 33      C2 =変化(文字列' ' 、m、n)が
 34 であれば、C1> = C2:
 35         プリント(C1)
 36           37          プリント(C2)
 38  
39  もし __name__ == ' __main__ ' 40      (メイン)

 

アルゴリズムのアイデア:ダブルポインタ、スラ​​イディングウィンドウ。

質問の意味によると、我々は両方の変換をしようとする必要があります。1.「」変換する「B」、2「b」を「A」を変換します...

各変換のためには、スライディングウィンドウM変換領域内で行われます。m番目の変換が完了すると、現在の領域の長さ、およびスライディングウィンドウを計算します。

おすすめ

転載: www.cnblogs.com/asenyang/p/11319066.html