面試題 01.01. 判定字符是否唯一
實現一個算法,確定一個字符串 s 的所有字符是否全都不同。
示例 1:
輸入: s = "leetcode"
輸出: false
示例 2:
輸入: s = "abc"
輸出: true
限制:
0 <= len(s) <= 100
如果你不使用額外的數據結構,會很加分。
代碼
public boolean isUnique(String astr) {
if(astr.length()<2)
return true;
int n=0;
for(int i=0;i<astr.length();++i){
if(((1<<(astr.charAt(i)-'a'))&n)!=0){
return false;
}
n|=(1<<(astr.charAt(i)-'a'));
}
return true;
}
我們用一個int n來做一個哈希表
通過 astr.charAt(i)-‘a’ 我們確定了是哪個字母 從而使n的那個位爲1 表示已經訪問過
遍歷時先判斷那個位是否爲1 我們可以通過&運算來判斷兩個數之間是否出現位數同爲1的 如果不爲0 說明那個數在之前就已經出現過了 不唯一