leetcode 87スクランブル文字列

LC 87スクランブル文字列

我々は、すべてのカット文字列の場所を確認する必要があります

すなわちS1(0、1、2、...、N-1)、S2(0、1、2、...、N-1)

カット設定点I、文字列に(0〜I-1)、(I〜N-1)

1 = <I <= N-1(iは0を直接に等しい(=)、S1S2か否かを決定することに相当)

二つの可能性があることに注意してください

A)S1(0〜I-1)配S2(0〜I-1)、S1(iは〜N-1)配S2(I〜N-1)

B)S1(0〜I-1)配S2(NI、N-1)、S1(I〜N-1)配S2(0〜NI-1)

 

また、一致する文字列をチェックする必要がアナグラム、文字列と等圧であり、例えばaabababs、saaaabbb

オカレンスは、文字をチェックするためにINT [26]を使用することができます

異なるfalseを返します

 

a)またはb)の真式2つの接合見返りに、スクランブル文字列に記載されているときはいつでも、次に再帰式は、両方の場合で調べました

1  クラスソリューション{
 2      公共 ブールisScramble(ストリングS1、文字列s2){
 3          であれば(s1.equals(S2))
 4              戻り 5          INT [] ABC = 新しい INT [26 ]。
図6は、         のためにint型、iはs1.lengthを()<; I = 0 iは++ ){
 7              ABC [s1.charAt(I) - 'A'] ++ ;
8              ABC [s2.charAt(I) - 'A'] - 9          }
 10          
11          のためにint型私は:ABC)を
 12              もし(!I = 0 13                  リターン はfalse ;
14          
15の         ためにint型、iはs1.lengthを()<; i = 1からiが++ ){
 16              であれば(isScramble(s1.substring(0、I)、s2.substring(0、I))&& isScrambleは(s1.substring( I)、(I)))s2.substring
 17                  リターンを 18              であれば(isScramble(s1.substring(0、I)、s2.substring(s2.length() - I))&& isScramble(()、s2.lengthを、(I)s1.substring 0(s2.substring - 私)))
 19                  リターン 20          }
 21          リターン 22      }
 23 }

 

おすすめ

転載: www.cnblogs.com/hwd9654/p/10958953.html