题目:给定两个字符串,一个是单词模式字符串,另一个是目标字符串。之后检查目标字符串是否为给定得单词模式,即求目标字符串中单词出现的规律是否符合单词模式字符串中的规律。例如:单词模式字符串为“一二二一”,目标字符串为“苹果 香蕉 香蕉 苹果”,二者得规律一样,匹配成功。
分析:
code:
def wordPattern(input1, input2):
if len(input1) != len(input2): # 如果两个字符串得长度不一样,则肯定不匹配
return False
hashTable = {} # 记录模式字符串和目标字符串得对应关系
used = {} # 记录目前已经使用过得字符串都有哪些
for i in range(len(input1)):
if input1[i] in hashTable: # 检查模式字符串中的字符是否已经被记录过映射关系
if hashTable[input1[i]] != input2[i]: # 不是第一次出现,则检查映射关系是否一致
return False
else:
if input2[i] in used: # 检查这个单词是否已经使用过,使用过返回不成立
return False
hashTable[input1[i]] = input2[i] # 第一次出现,则加入哈希表
used[input2[i]] = True # 在used中保存哪些单词已经使用过
return True
if __name__ == "__main__":
input1 = "一二二一"
input2 = "1331"
print(wordPattern(input1, input2))
程序运行结果:
True
网友评论