1. 程式人生 > 實用技巧 >leetcode242之有效的字母異位詞

leetcode242之有效的字母異位詞

題目描述:

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

示例1:

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

示例 2:

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

程式碼實現:
 1 from collections import Counter
 2 
 3 def isyiwei(s, t):
 4     '''
 5     判斷s是否為t的字母異位詞
 6     :param s:
 7     :param t:
 8     :return:
 9     '''
10     s = list(s)
11 t = list(t) 12 if len(s) == len(t): 13 for i in s: 14 if i in t: 15 t.remove(i) 16 else: 17 return False 18 else: 19 return False 20 21 return True 22 23 24 print("---------測試isyiwei()------------") 25 s = "
rat" 26 t = "car" 27 print(isyiwei(s, t)) 28 29 def isyiwei1(s, t): 30 ''' 31 雜湊表判斷 32 :param s: 33 :param t: 34 :return: 35 ''' 36 s_dict = dict(Counter(s)) 37 t_dict = dict(Counter(t)) 38 print(s_dict) 39 print(t_dict) 40 41 if len(s_dict) == len(t_dict):
42 for i in s_dict: 43 if i in t_dict and s_dict[i] == t_dict[i]: 44 continue 45 else: 46 return False 47 else: 48 return False 49 50 return True 51 52 53 print(isyiwei1(s, t))

總結:上述採取兩種方法來判斷,第一種為列表形式,首先判斷兩個列表長度是否相等,若相等則繼續,遍歷s中一個元素,若在t中也找到,則在t中去掉該元素,繼續迴圈遍歷下一元素,直至結束,返回True;在判斷過程中,若出現s中元素不存在t中,返回False。若兩列表長度不等,直接返回False。

方法2採用雜湊表形式,呼叫collections.Counter()物件進行元素計數並轉為字典,和方法1很相似,判斷兩字典長度是否相等,若相等繼續判斷字典s_dict中元素是否全部存在於t_dict中,直至判斷結束,返回True,否則返回False