有效字謎(Valid Anagram)

虛擬碼


解題

242. Valid Anagram

題目說明

給定兩個字串和 ,返回 if 是 的字謎,否則。sttruetsfalse
字謎是通過重新排列不同單詞或短語的字母而形成的單詞或短語,通常只使用一次所有原始字母。

解法

  1. 首先判斷兩字串長度是否相同 如果不同回傳false
  2. 迴圈判斷2字串是否有不同 (使用indexOf)
  3. 回傳 -1 代表找不到相同的 回傳false
  4. 回傳不是 -1 的就將同位置字元刪除 再跑一圈

第一種
Javascript

/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
let s_len = 0; let t_len = 0;
s_len = s.length; //s字串長度
t_len = t.length; //t字串長度
//首先判斷兩字串長度是否相同
if (s_len !== t_len) {
return false
}

let chk_arr = ''; //拿來判斷&操作的字串
chk_arr = t;
//迴圈判斷是否有不同
for (let i = 0; i < s_len; i++) {
let chk_lt = -1; //檢查碼
chk_lt = chk_arr.indexOf(s[i]);
//chk_lt==-1 代表找不到相同
if (chk_lt == -1) {
return false;
}
// 有相同的就將同位置字元刪除
else
{
chk_arr = chk_arr.replace(chk_arr[chk_lt],"");
// console.log(i + ',' + chk_lt + ',' + chk_arr );
}
}
return true;
};

chatGPT解說

這段程式碼是一個判斷兩個字串是否為異位字的函式,其中使用了字串的 length 屬性和 indexOf() 方法。

在這個函式中,indexOf() 方法被用於查找字串 t 中是否存在與字串 s 中的某個字符匹配的字符。如果存在,則在 chk_arr 中將該字符替換為空字串,以便在後續的迴圈中避免重複使用。如果 indexOf() 方法找不到與 s 中的字符匹配的字符,則返回 false,表示兩個字串不是異位字。

總結來說,雖然 indexOf() 方法是定義在陣列上的,但是字串也是一種類似於陣列的序列型資料結構,因此也可以使用 indexOf() 方法來查找特定字符的位置。