私はオンラインで見つけたプログラムを持っています。これは基本的に、String
にすべての一意の文字が含まれているかどうかを示します。以下はコードです
private static boolean areCharsUnique(String str) {
if (str.length() > 256)
return false;
int checker = 0;
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0) {
return false;
}
checker |= (1 << val);
}
return true;
}
私はこのコード行if ((checker & (1 << val)) > 0)
とまた
checker |= (1 << val);
私はそれ<<
が左シフト演算子であることを知っていますが、上記の状況でどのように正確に左シフトが役立つのでしょうか?
要するに、上記のプログラムはどのように機能しますか?