JAVA leetCode&&程序員面試金典面試題 01.01. 判定字符是否唯一 我的解題記錄

面試題 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 說明那個數在之前就已經出現過了 不唯一

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章