字串中的第一個唯一字元(First Unique Character in a String)
字串中的第一個唯一字元(First Unique Character in a String)
虛擬碼
function bubble_sort (array, length) { |
解題
387. First Unique Character in a String
題目說明
給定一個字串,找到其中的第一個非重複字元並返回其索引。如果不存在,則傳回 。s-1

解法
第一種
Javascript
/** |
第二種 [失敗範例]/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
let no = 0;
for (let i = 0; i < s.length; i ++) {
for (let j = i+1; j < s.length; j ++) {
let fir = ""; //第一個
let sec = ""; //下一個
fir = s[i];
sec = s[j];
if (fir !== sec) {
no += 0;
} else {
no += 1;
}
console.log(i + fir + ',' + j + sec + ',' + no);
}
if (no == 0) {
return i;
} else {
no += 0;
}
}
return -1;
};
chatGPT解說
首先,這段程式碼使用了箭頭函式 (arrow function) 的語法,定義了一個名為 firstUniqChar 的函式,這個函式接收一個字串 s 作為參數。接下來,這個函式建立了一個空的 Map 物件,這個 Map 物件的目的是要存儲字串中每個字母出現的次數。
程式碼接下來使用了 for…of 的語法來迭代字串 s,對於字串中的每一個字母 letter,程式碼檢查 Map 物件中是否已經存在該字母,如果存在,就將其對應的值減一,表示這個字母出現了多次;如果不存在,就將其對應的值設定為 1,表示這個字母出現了一次。
接著,程式碼使用 for…of 的語法來迭代 Map 物件。對於 Map 物件中的每一個元素 item,進行判斷,如果這個元素的值等於 1,表示這個字母只出現了一次,那麼程式碼就回傳在原字串 s 中該字母的索引值,使用 indexOf 方法可以找到該字母在字串中第一次出現的位置。如果程式碼迭代完整個 Map 物件,仍然沒有找到只出現了一次的字母,那麼函式就回傳 -1,表示在原字串中沒有任何不重複的字母。
總結來說,這段程式碼使用 Map 物件來統計字串中每個字母出現的次數,然後再使用 Map 物件來找到第一個只出現一次的字母。程式碼中使用了 for…of 的語法來迭代字串和 Map 物件,這種語法相對於 for 循環更為簡潔,也更容易讀懂。



