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)。我們基本上使用了一些內建方法來解決給定的問題。

更新於: 2023年5月18日

224 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告