link:
leetcode
解題思路:
- 建立一個 0~25 的陣列
letters
,用來做每個英文字母的 counter - 逐一讀取
s
中的字元,並使用letters
做每個英文字母的計數 - 逐一讀取
s
中的字元,若該字元計數為1
則回傳當前位置
- 建立一個 0~25 的陣列
程式碼:
/**
* @param {string} s
* @return {number}
*/
const firstUniqChar = function(s) {
let letters = Array(26).fill(0);
for (var i = 0; i < s.length; i++) {
letters[s[i].charCodeAt(0) - 97]++;
}
for (var i = 0; i < s.length; i++) {
if (letters[s[i].charCodeAt(0) - 97] === 1) {
return i;
}
}
return -1;
};
- 結果: