排序題目之有效的字母異位詞

2022-01-10 11:52:51 字數 1976 閱讀 2840

題目:給定兩個字串 s

和 t,編寫乙個函式來判斷 t

是否是 s

的字母異位詞(python語言)。

1 示例 1:

23 輸入: s = "

anagram

", t = "

nagaram"4

輸出: true

5 示例 2:

67 輸入: s = "

rat", t = "

car"

8 輸出: false

說明:你可以假設字串只包含小寫字母。

高階:如果輸入字串包含unicode字元怎麼辦?你能否調整你的解法來應對這種情況?

下面看下面大神的操作:

首先說一下sorted/sort的用法:

基本排序,呼叫sorted()函式即可放回乙個新的已排序列表,如果你不需要原列表亦可以使用list.sort()實現,他直接修改原列表,效率會比sorted()高。

1 sorted([5, 2, 3, 1, 4])   #

[1, 2, 3, 4, 5]

2 a = [5, 2, 3, 1, 4] #

a.sort() [1, 2, 3, 4, 5]

另外乙個區別是,list.sort()

方法只是為列表定義的,而sorted()

函式可以接受任何可迭代物件。

1 sorted()  #

[1, 2, 3, 4, 5]

題解1:

通過將 s 的字母重新排列成 t 來生成變位詞。因此,如果 t 是 s 的變位詞,對兩個字串進行排序將產生兩個相同的字串。此外,如果 s 和 t 的長度不同 t 不能是 s 的變位詞,我們可以提前返回。

1#排序

2class

solution(object):

3def

isanagram(self, s, t):

4"""

5:type s: str

6:type t: str

7:rtype: bool

8"""

9if len(s) !=len(t):

10return

false

11if sorted(s) !=sorted(t):

12return

false

13return true

題解2:

1#雜湊

2#標準字典包括setdefault方法()獲取乙個值,如果值不存在,建立乙個預設。相比之下,defaultdict允許呼叫者在初始化時預先設定預設值。

3class

solution(object):

4def

isanagram(self, s, t):

5"""

6:type s: str

7:type t: str

8:rtype: bool

9"""

10if len(s) !=len(t):

11return

false

12 dicts =collections.defaultdict(int)

13for i in

range(len(s)):

14 dicts[s[i]] = dicts[s[i]] + 1

15 dicts[t[i]] = dicts[t[i]] - 1

16for val in

dicts.values():

17if val !=0:

18return

false

19return true

初學者分享及成功,你的報應就是我,記得素質三連!

LeetCode之有效的字母異位詞

介紹 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true示例2 輸入 s rat t car 輸出 false說明 你可以假設字串只包含小寫字母。高階 如果輸入字串包含 unicode 字元怎麼辦?你...

演算法案例之有效字母異位詞

本題參考力扣題解寫的理解思路,原文請參照力扣官網242題 題目 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true 示例 2 輸入 s rat t car 輸出 false 說明 你可以假設字串只包含小寫...

有效的字母異位詞

原題位址 判斷是否是字母異位詞即判斷字串中是否只有字元的位置不同,也就是判斷兩個字串中包含的字元以及這些字元出現的次數是否相同 首先既然只有位置不同,那麼長度不同的字串必然不符合要求。將字串轉換為字元陣列之後對陣列進行排序,這兩個陣列中的元素必然全部相等 public boolean isanagr...