Problem
Implement an algorithm to determine if a string has all unique characters.
Example
Given "abc", return true.
Given "aab", return false.
Challenge
What if you can not use additional data structures?
Note
用HashSet做,十分简单。
如果不使用String之外的数据结构的话,可以用bit manipulation来做。不过只能过纯字母字符的testcase。
Solution
public class Solution {
public boolean isUnique(String str) {
HashSet<Character> set = new HashSet<Character>();
for (int i = 0; i < str.length(); i++) {
if (!set.contains(str.charAt(i))) {
set.add(str.charAt(i));
}
else return false;
}
return true;
}
}
public class Solution {
public boolean isUnique(String s) {
int checker = 0;
for (int i = 0; i < s.length(); i++) {
int cur = s.charAt(i) - 'a';
if ((checker & (1 << cur)) > 0) {
return false;
}
checker |= 1 << cur;
}
return true;
}
}