iT邦幫忙

0

leetcode with python:205. Isomorphic Strings

  • 分享至 

  • xImage
  •  

題目:

Given two strings s and t, determine if they are isomorphic.

Two strings s and t are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.

給定兩個字串,判斷一字串中的字元是否可透過字元替換而變成另一個字串
要特別注意的是,替換的關係僅能是一對一映射的
ex:(1)input:"egg","add"=>output: true(e換a,g換d)
(2)input:"foo","bar"=>output: false(f換b,o換a,o換r,很明顯o的替換關係不是1對1映射)

我們透過建立hash map,紀錄對應關係,觀察是否有非一對一關係

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        d={}
        for i in range(len(s)):
            if s[i] not in d: 
                if t[i] not in d.values():
                    d[s[i]]=t[i]
                else:
                    return False
            else:
                if d[s[i]]!=t[i]:
                    return False        
        return True

s,t個別表兩字串,然後我們設dictionary為d存放對應關係
從頭開始存放關係(s[i]是key,t[i]是value),會出現以下幾種可能

(1)s[i]不存在key中且t[i]不存在value中:發現新對應關係,紀錄

(2)s[i]不存在key中但t[i]存在value中:發現非一對一關係,return False

(3)s[i]存在key中且對應值和t[i]相同:發現重複的關係而已,無視

(4)s[i]存在key中但對應值和t[i]不同:發現非一對一關係,return False

若紀錄完都沒發現非一對一關係就return True
最後執行時間30ms(faster than 99.74%)

那我們下題見


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

尚未有邦友留言

立即登入留言