1. 程式人生 > >LintCode Unique Characters 判斷字串是否沒有重複字元

LintCode Unique Characters 判斷字串是否沒有重複字元

實現一個演算法確定字串中的字元是否均唯一出現

樣例
給出”abc”,返回 true
給出”aab”,返回 false

挑戰
如果不使用額外的儲存空間,你的演算法該如何改變?

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?

未用額外空間,時間複雜度O(n^2)

public class Solution {
    /**
     * @param str: a string
     * @return: a boolean
     */
    public boolean isUnique(String str) {
        for(int i = 0; i < str.length(); i++) {
            for(int j = i + 1; j < str.length(); j++) {
                if(str.charAt(i) == str.charAt(j))
                    return
false; } } return true; } }

使用額外空間,時間複雜度O(n)

public class Solution {
    /**
     * @param str: a string
     * @return: a boolean
     */
    public boolean isUnique(String str) {
        Set<Character> set = new HashSet<Character>();
        for(int i = 0
; i < str.length(); i++) { if(set.contains(str.charAt(i))) return false; set.add(str.charAt(i)); } return true; } }