給定兩個字串 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...