问题是要弄清楚给定字符串中是否没有任何重复的字符。约束是字符串仅包含字符 az(仅小写)。
显而易见的解决方案是使用数组(或哈希表)来跟踪您遇到的字符。但问题是你不能使用数据结构。
以下是该问题的一种解决方案。但我不太明白它是如何工作的。我可以看到它使用整数的位来跟踪遇到的字符。
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;
}