387. 字串中的第一個唯一字元
阿新 • • 發佈:2019-01-10
題目
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -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; } }