5207文字列は、できるだけ等しく

同じ文字列にあなたに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 }

 

おすすめ

転載: www.cnblogs.com/zouma/p/11606877.html