242 有效的字母異位詞

2021-09-02 11:45:45 字數 1340 閱讀 6449

給定兩個字串 s 和 t ,編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。

輸入: s = "anagram", t = "nagaram"

輸出: true

輸入: s = "rat", t = "car"

輸出: false

方法1 類似雜湊(還是重複問題)

首先需要明白題的意思,其實就是比較兩個字串中字母是否相同,在相同的情況下比較該字元的數目是否相等。

函式中先判斷兩個字串的長度是否相等,不相等,直接返回false就不需要進行下面的操作

定義兩個物件,物件裡面的變數格式在這裡我就表示一下啊 哈

let obj=
分別對兩個字串進行遍歷(o(n)的時間複雜度),如果物件不存在,則新增該單個字元,並將它的數值設定為1。存在的話,就把他的數值加1

將物件轉換為陣列,進行陣列長度的迴圈(這裡為什麼要把物件轉換為陣列,其實就是得到他的長度啊 哈)然後對陣列進行遍歷,然後將兩個物件內對應陣列遍歷的值,進行比較。如果他們不同(說明某個字元,在兩個字串中出現的長度並不相等)直接返回false

/**

* @param s

* @param t

* @return

*/var isanagram = function(s, t) else if (s.length == 0 && t.length == 0) else

let tobj = {}

for (let i = 0; i < s.length; i++) else

}for (let i = 0; i < t.length; i++) else

}let arr = object.keys(tobj)

for (let i = 0; i < arr.length; i++)

}return true

}};

方法2 排序

sort方法可以對字元按照編碼排序

d,c,b,a

排完序以後

a,b,c,d

思路很簡單哦:先把字串是s,t用字串轉換為陣列a,b(split怎麼用,自己看api)。然後先看他們長度一樣不,不一樣就沒必要進行下面的操作。

一樣的話,就對他們進行排序,排完序。a和b兩個陣列是相等的(不是相同因為,記憶體位址不同)。那麼進行迴圈,相同位置上的數它們都應該相等。不相等直接返回false

var isanagram = function(s, t) 

}return true

}return false

}

242 有效的字母異位詞

給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true示例 2 輸入 s rat t car 輸出 false說明 你可以假設字串只包含小寫字母。class solution object def isa...

242 有效的字母異位詞

給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫字母。class solution def isanagra...

242 有效的字母異位詞

給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫字母。方法一 class solution public boo...