leetcode242之有效的字母異位詞
阿新 • • 發佈:2020-08-16
題目描述:
給定兩個字串 s 和 t ,編寫一個函式來判斷 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