1. 程式人生 > >387. 字串中的第一個唯一字元

387. 字串中的第一個唯一字元

題目

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。

案例:

s = “leetcode”
返回 0.

s = “loveleetcode”,
返回 2.

注意事項:您可以假定該字串只包含小寫字母。

思路

從左到右統計字元出現的個數,如果發現某一個字元只出現一次就返回該字元的索引值。

  • 將字串轉換成字元陣列
  • 用mark陣列記錄字元出現的次數

程式碼

class Solution {
    public int firstUniqChar(String s) {
        int len = s.length();
        char[] str = s.toCharArray();  //將字串轉換成字元陣列
        int[] mark = new int[256];  //用mark陣列記錄字元出現的次數
        for(int i=0; i<len; i++){
            if(mark[str[i]] == 0){  //如果該字元之前沒有出現過
                mark[str[i]] = 1;  
                for(int j=i+1; j<len; j++){   //檢視該字元之後有沒有出現過
                    if(str[i]==str[j]) mark[str[i]]++;
                }
                if(mark[str[i]]==1) return i;  //等於1代表該字元之後沒有出現過
            }
        }
        return -1;
    }
}