python實現有效的字母異位詞

2021-10-13 07:41:49 字數 3056 閱讀 2303

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

示例 1:

輸入: s = 「anagram」, t = 「nagaram」 輸出: true 示例 2:

輸入: s = 「rat」, t = 「car」 輸出: false 說明: 你可以假設字串只包含小寫字母。

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

將兩個字串分別建立雜湊表,分別統計字串中的元素及個數,之後比較兩個字串是否相等,若相等,則返回true;否則返回false。

# -*- coding: utf-8 -*-

'''題目簡述:

給定兩個字串,判斷兩個字串所包含字母數量和型別是否一致。

基本思路:

可以使用hash演算法,建立兩個字典分別統計字串總個數和數量,之後判斷兩個字典是否相等。

'''class

solution()

:def

isanagram

(self,s,t)

:# 將 字串s 建立雜湊表

sword =

list

(s) scount =[0

]*len(sword)

sdict =

dict

(zip

(sword,scount)

)for ele in s:

sdict[ele]+=1

# 將 字串t 建立雜湊表

tword =

list

(t) tcount =[0

]*len(tword)

tdict =

dict

(zip

(tword,tcount)

)for ele in t:

tdict[ele]+=1

# 比較兩個哈細胞是否相等

if sdict == tdict:

return

true

return

false

if __name__ ==

'__main__'

: s =

'anagram'

t ='nagaram'

solu = solution(

) res = solu.isanagram(s,t)

print

('結果為\n'

,res)

字串可以排序!!!因此,將字串轉成list後 排序,然後比較對應位置元素是否相等即可。

# -*- coding: utf-8 -*-

'''題目簡述:

給定兩個字串,判斷兩個字串所包含字母數量和型別是否一致。

基本思路:

字串可以排序!!! 因此,將字串轉成list後 排序,然後比較對應位置元素是否相等即可。

'''class

solution()

:def

isanagram

(self,s,t):if

len(s)

!=len

(t):

# 若兩個字串長度不等,則直接返回false.

return

false

slist =

list

(s)# 轉成list

tlist =

list

(t) slist.sort(

)# 排序

tlist.sort(

)for sword,tword in

zip(slist,tlist)

:if sword == tword:

continue

else

:return

false

return

true

if __name__ ==

'__main__'

: s =

'anagram'

t ='nagaram'

solu = solution(

) res = solu.isanagram(s,t)

print

('結果為\n'

,res)

python中remove不關注被刪除元素的位置,只要list中有這個元素,就可以直接刪除。因此,可以遍歷字串中元素,然後remove。若沒有報錯,則說明相等。

# -*- coding: utf-8 -*-

'''題目簡述:

給定兩個字串,判斷兩個字串所包含字母數量和型別是否一致。

基本思路:

字串可以排序!!! 因此,將字串轉成list後 排序,然後比較對應位置元素是否相等即可。

'''class

solution()

:def

isanagram

(self,s,t):if

len(s)

!=len

(t):

# 若兩個字串長度不等,則直接返回false.

return

false

slist =

list

(s)for word in t:

try:

slist.remove(word)

except

:return

false

return

true

if __name__ ==

'__main__'

: s =

'anagram'

t ='nagaram'

solu = solution(

) res = solu.isanagram(s,t)

print

('結果為\n'

,res)

a. 字串可以排序,前提將其轉成list。

b. remove不關注位置,只要list中有這個元素,就可以刪除。

242 有效的字母異位詞 Python

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

242 有效的字母異位詞 python

題目 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。輸入 s anagram t nagaram 輸出 true 輸入 s rat t car 輸出 falsecollections.defaultdict int 訪問dict中不存在的key值不報錯,預設值為0 cl...

有效的字母異位詞

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