--- tags: Data Structure I, LeetCode disqus: HackMD --- # 有效字謎(Valid Anagram) ## 虛擬碼 ```pseudocode= ``` ## 解題 [242. Valid Anagram](https://leetcode.com/problems/valid-anagram/?envType=study-plan&id=data-structure-i) ### 題目說明 給定兩個字串和 ,返回 if 是 的字謎,否則。sttruetsfalse 字謎是通過重新排列不同單詞或短語的字母而形成的單詞或短語,通常只使用一次所有原始字母。  ### 解法 1. 首先判斷兩字串長度是否相同 如果不同回傳false 2. 迴圈判斷2字串是否有不同 (使用indexOf) 3. 回傳 `-1` 代表找不到相同的 回傳false 4. 回傳不是 `-1` 的就將同位置字元刪除 再跑一圈 第一種 **Javascript** ```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() 方法來查找特定字符的位置。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.