ビットベクトルを使って文字列内で一意の文字を見つける次のコードがあります。私たちはそれが小文字だけでASCII文字セットだと仮定します。文字列内の一意の文字を見つける際のビットベクトルの使い方を理解する
以下のビットベクトルの使用を理解するのは苦労しています。プログラムをデバッグした後でも、各ループの後に変更変数が続きます。左1でのval(文字列の各文字のint型の表現)をシフトして(0に初期化)チェッカーでそれをAND'ingし、他のブロックでそれを論理和(OR)の目的は何
// assuming that the characters range from a-z
static boolean isUniqueBitVector(String str) {
int checker = 0;
for(int i = 0; i < str.length(); i++) {
int val = str.charAt(i) - 'a';
if((checker & (1 << val)) > 0) {
return false;
} else {
checker |= (1 << val);
}
}
return true;
}
。
"小文字だけのASCII文字セットだとします。"さて、あなたがJavaの 'String'と' char'を使用していることから、もっと重要な点は、小文字の[Basic Latin](http://www.unicode.org/charts/nameslist/index.html)のUnicode文字セットです)文字のみ。 'if'-' throw'パラメータの検証パターンは、仮定を文書化して強制するのに最適です。 –