JavaScript 字串變位詞檢查
在這個問題陳述中,我們的目標是藉助 Javascript 功能來檢查字串變位詞。因此,為了解決這個問題,我們首先需要用簡單的術語理解問題。
理解問題陳述
我們給定一個字串作為輸入字串,我們的主要目標是檢查該字串是否為變位詞字串。如果是變位詞,則返回 true,否則返回 false。
什麼是變位詞?
在給定的問題陳述中使用了“變位詞”這個詞!讓我們首先了解這個詞的意思。變位詞是指透過重新排列任何單詞或句子中的字母而形成的單詞。基本上,我們可以說,如果兩個單詞具有相同的字母且長度相同,則稱為變位詞。例如,我們有一個字串“silent”,如果我們重新排列此字串並在重新排列後得到“listen”,那麼 silent 和 listen 具有相同的字母並且具有相同的長度 6。因此,這被稱為字串變位詞。
給定問題的邏輯
對於程式碼,我們首先會清理給定的字串,因為字串也可能包含非單詞字元以及大寫字母或正則表示式,因此請清理並將其從字串中刪除。之後,我們將字串拆分為字元陣列。然後,我們將使用 Javascript 中的 sort 方法對它們進行排序。因此,現在我們將擁有排序後的字元,然後將它們再次連線成字串。最後,我們將比較排序後的字串以檢查它們是否相等。如果它們相似,則它們是變位詞。
演算法
步驟 1 − 宣告一個名為 isAnagram 的函式,該函式使用兩個字串引數。
步驟 2 − 將給定的字串轉換為小寫,並從輸入字串中刪除任何非字元以獲得所需和實際結果。
步驟 3 − 應用 split、sort 和 join 方法後,檢查兩個字串(在刪除了額外字元之後)。此程式碼行將以布林形式獲取輸出。
步驟 4 − 返回結果為 true 或 false。
演算法程式碼
//function to find out anagram status function isAnagram(str1, str2) { // Remove any non-word characters and convert to lowercase const remove1 = str1.replace(/[^\w]/g, "").toLowerCase(); const remove2 = str2.replace(/[^\w]/g, "").toLowerCase(); // Check if the sorted strings are equal return remove1.split("").sort().join("") === remove2.split("").sort().join(""); } const anagram1 = isAnagram("tutorials", "uttoslair"); const anagram2 = isAnagram("point", "heoll"); // example usage console.log(anagram1); console.log(anagram2);
複雜度
函式花費的時間為 O(n log n),因為該方法使用 Javascript 的 sort 方法對字串字元進行排序。而 n 是字串的大小。程式碼使用的空間為 O(n),因為它儲存了已清理和排序陣列的新陣列。
結論
因此,上述建立的函式可用於找出給定的字串是否為變位詞,時間複雜度為 O(n log n)。我們基本上使用了一些內建方法來解決給定的問題。