如何使用以字符爲索引的數組

在做java相關的字符串問題時,遇到這行字符串各個字母出現的次數,大家都會聯想到map,一個key對應一個value。其實也可以用數組去實現。這是在做劍指offer的第一個只出現一次的字符遇到的問題。看題。

在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫)
代碼:

public int FirstNotRepeatingChar(String str) {
    int[] cnts = new int[256];
    for (int i = 0; i < str.length(); i++)
        cnts[str.charAt(i)]++;
    for (int i = 0; i < str.length(); i++)
        if (cnts[str.charAt(i)] == 1)
            return i;
    return -1;
}

代碼講解:
ascll一共256位,設一個長度爲256的整型數組,然後遍歷字符串,遇到對應字符就++。思想就像索引爲key,也是map的思想,但是降低了空間複雜度。
舉個栗子

 public static void main(String[] args) {
        int [] a = new int[255];
        a['b'] = 1;
        a['a'] =2;
        System.out.println(a['b']);
    }

這樣對處理字符串會很容易

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