題目:給定兩個(gè)字符串,一個(gè)是單詞模式字符串恩静,另一個(gè)是目標(biāo)字符串焕毫。之后檢查目標(biāo)字符串是否為給定得單詞模式,即求目標(biāo)字符串中單詞出現(xiàn)的規(guī)律是否符合單詞模式字符串中的規(guī)律驶乾。例如:單詞模式字符串為“一二二一”邑飒,目標(biāo)字符串為“蘋果 香蕉 香蕉 蘋果”,二者得規(guī)律一樣级乐,匹配成功幸乒。
分析:
code:
def wordPattern(input1, input2):
? ? if len(input1) != len(input2):? # 如果兩個(gè)字符串得長度不一樣,則肯定不匹配
? ? ? ? return False
? ? hashTable = {}? # 記錄模式字符串和目標(biāo)字符串得對(duì)應(yīng)關(guān)系
? ? used = {}? # 記錄目前已經(jīng)使用過得字符串都有哪些
? ? for i in range(len(input1)):
? ? ? ? if input1[i] in hashTable:? # 檢查模式字符串中的字符是否已經(jīng)被記錄過映射關(guān)系
? ? ? ? ? ? if hashTable[input1[i]] != input2[i]:? # 不是第一次出現(xiàn)唇牧,則檢查映射關(guān)系是否一致
? ? ? ? ? ? ? ? return False
? ? ? ? else:
? ? ? ? ? ? if input2[i] in used:? # 檢查這個(gè)單詞是否已經(jīng)使用過罕扎,使用過返回不成立
? ? ? ? ? ? ? ? return False
? ? ? ? hashTable[input1[i]] = input2[i]? # 第一次出現(xiàn),則加入哈希表
? ? ? ? used[input2[i]] = True? # 在used中保存哪些單詞已經(jīng)使用過
? ? return True
if __name__ == "__main__":
? ? input1 = "一二二一"
? ? input2 = "1331"
? ? print(wordPattern(input1, input2))
程序運(yùn)行結(jié)果:
True