--- 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up