問題は、指定された文字列に重複する文字がないかどうかを調べることです。文字列には文字a-z(小文字のみ)が含まれているという制約があります。O(n)時間およびO(1)メモリ内の文字列に重複があり、データ構造がないことを検出する
明白な解決策は、遭遇した文字を追跡するために配列(またはハッシュテーブル)を使用することです。しかし問題は、データ構造を使用することが許されていないことです。
この問題の解決策の1つは次のとおりです。しかし、私はそれがどのように機能しているのかよく分かりません。私はそれが遭遇する文字を追跡するために整数のビットを使用していることがわかります。
public boolean isUniqueChars(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;
checker |= (1 << val);
}
return true;
}