2017-11-04 6 views
0

runner.children[c-'a'] の意味は、次のコードの意味で説明できます。javaでハイフン( - )を使用すると、

public boolean search(String word) { 
    TrieNode runner = root; 
    for(char c : word.toCharArray()) { 
     if(runner.children[c-'a'] == null) { 
      return false; 
     } else { 
      runner = runner.children[c-'a']; 
     } 
    } 
    return runner.isEndOfWord; 
} 
+1

ハイフンではありません。それは*マイナス*です。 – XenoRo

+0

''a''はascii 97なので 'c - 97'です。 – MadProgrammer

答えて

0

この場合、children []は、おそらくa-zからの文字のサイズのサイズです。

ここで起こっていることは、char cのascii値をとり、 'a'のasciiコードを引くことです。効果的にアルファベットで文字cのインデックスを得ることになるのです

レッツのC = 'B' とC

[c-'a'] = 98 - 97 = 1 (Ascii of b - Ascii of a) 

= 'D'

[c-'a'] = 100 - 97 = 3 
1

を(0-指数が想定しました)差し引くだけです。文字は数字のように減算することができます。文字コードを差し引いた結果になります。 'a''c'よりも小さいため、'c' - 'a'(たとえば)は2に等しくなります。

2

すべてcharには数値があります。詳細はthe ASCII tableをご確認ください。

ように可変cが文字Bが含まれており、文字ことからを引くことを前提とし、あなたの答えをを取得します。

0

minusハイフンではありません。 Javaでは、charは2バイトのスペースをとります。 charは00000000から11111111までのビットの表現であり、最上位ビットは符号付きビットとして読み出される。 int型の変数にcharを代入することによっても簡単に数値として読み取ることができます(intは4バイトを受け入れることができるので、2バイトのcharは簡単に適合できます)。また、私はhttps://stackoverflow.com/a/47106997/504133上の答えを好きで、私の答えを拡張するためのリンクを追加したい配列の

char charA = ''A'; // represents 65 
char charB = `B`; // represents 66 
int diff = charB - charA; // this will represent 66-65 i.e. 1 

指数はpositve int型であるため、それはまた

anyTypeArray[charB - charA] //represents the 2nd element (index starts from 0 for arrays in java). 

anyTypeArray['C' - charA] // represents the 3rd element of the array 

のような値を受け入れることができます。

1

-は、減算演算子です。すなわち

§15.18.2 The type of each of the operands of the binary - operator must be a type that is convertible to a primitive numeric type

§5.6.2 Widening primitive conversion is applied to convert either or both operands … both operands are converted to type int. Binary numeric promotion is performed on the operands of certain operators: … addition and subtraction operators for numeric types + and - …

c'a'両方がタイプcharCharacter.MIN_VALUEからCharacter.MAX_VALUEの範囲を有するUTF-16コード単位)です。減算により、タイプはintに広げられ、減算され、タイプintの値となります。

数字の行にある文字を考えてください。減算はある文字から他の文字までの距離です。 'a'への一定の参照で、'a','b'、... 'z'の距離は0,1、... 25です。これは、UTF-16番号行の特定の短いセグメントでのみ意味があります。

配列は0ベースです。このようにスケールをシフトすると、使用されていない文字に対応する要素を持つ大きな使用部分を持たずに文字を配列のインデックスに使用できます。

(注:。彼らはそれが正しいことを学習への道上のシンプルな、間違ったことを理解することは簡単だと思うので、一部の人々はASCIIを言っている)

関連する問題