iT邦幫忙

0

leetcode with python:242. Valid Anagram

  • 分享至 

  • xImage
  •  

題目:

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

給定兩個字串,判斷一個字串是否由另一個字串重組而成

這題最簡單可以這樣解

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        return sorted(s)==sorted(t)

透過sorted讓字串用字元編碼排序
若t真的是由s重組而成,兩者排序後應該會一模一樣
最後執行時間50ms(faster than 91.32%)

當然一般還是建立hash map去解

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        if len(s)!=len(t):
            return False
        d1={}
        d2={}
        
        for i in range(len(s)):
            if s[i] in d1:
                d1[s[i]]=d1[s[i]]+1
            else:
                d1[s[i]]=1
                
            if t[i] in d2:
                d2[t[i]]=d2[t[i]]+1
            else:
                d2[t[i]]=1
                
        for i in d1:
            if i not in d2:
                return False
            else:
                if d1[i]!=d2[i]:
                    return False
                
        return True

為兩字串個別建立一個dictionary,紀錄各字元出現的次數
最後再比較兩dictionary所記錄的值是否相等
且確認一字串是否有另一字串沒有的字元
最後執行時間48ms(faster than 93.25%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言