[LintCode] Unique Characters

401 查看

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;
    }
}