LintCode Unique Characters 判斷字串是否沒有重複字元
阿新 • • 發佈:2019-02-10
實現一個演算法確定字串中的字元是否均唯一出現
樣例
給出”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;
}
}