同じ文字列にあなたに2つの長さを与える、s
と t
。
s
最初の i
文字は、に変更される t
最初の i
文字が必要 |s[i] - t[i]|
オーバーヘッド(コストは0であってもよい)、ASCII文字の2つの値の間の差の、即ち絶対値。
文字列の変更のための最大の予算があります maxCost
。文字列を変換する際に、トータルコストが予算以下であるべきで、それはまた、形質転換された文字列が不完全であってもよいことを意味します。
あなたができる場合は s
そのに変換してサブストリング t
に対応するストリング、リターンを最大の長さに変換することができます。
場合は s
サブストリングは、に変換することができません t
、対応するサブ返されます 0
。
例1:
入力:S = "ABCD"、T = "BCDF"、コスト= 3 出力:3の 説明: "ABC"のS "BCD"になることがあります。コストは3であり、最大長は3です。
例2:
入力:S = "ABCD"、T = "CDEF"、コスト= 3
出力:1
説明:対応するTキャラクタに任意の順序で文字Sは、そのオーバーヘッドは2です。したがって、最大長 1。
例3:
入力:S = "ABCD"、T = "ACDE"、コスト= 0 出力:1つの 説明:あなたが変更を加えることはできませんので、最大長は1です。
ヒント:
1 <= s.length, t.length <= 10^5
0 <= maxCost <= 10^6
s
そして、 t
小文字のみが含まれています。
まず、自分の過ちのデモンストレーション、残業を書きます
1 INT equalSubstring(ストリング S、文字列 T、INT maxCost){ 2 のintサイズ= s.size()。 3 であれば(サイズ== 0 ) 4 戻り 0 ; 5 ベクター< INT >距離(サイズ、0 ); 図6は、 のために(int型 i = 0 ; iは、サイズ<; iは++ ) 7 { 8 の距離[I] = ABS(S [I] - T [I])。 9 } 10 用(自動E:距離) 11 COUT << E << " " 。 12 COUT << ENDL。 13の INTは RES = 0 。 14件 のint tempres = 0 。 15 のint i = 0、J = 0 ; 16 int型のカウント= 0 ; 17 一方(J < サイズ) 18 { 19 カウント+ = 距離[J]。 20 場合(カウント<= maxCost) 21 { 22 J ++ ; 23 tempres ++ ; 24の RES = MAX(RES、tempres)。 25 } 26 他の 27 { 28 カウント= 0 ; 29の RES = MAX(RES、tempres)。 30 tempres = 0 。 31 私は++します; 32 J = I。 33 } 34 } 35の リターンRES。 36 }