python 中的字符串比较未按预期工作

String comparison not working as expected in python

如有错误请指正

我正在尝试使用我为 Leetcode 问题之一编写的模式匹配程序。我想知道最后发生了什么错误,即使输出字符串与特定输入匹配。

def wordPattern(pattern,str):
    pattern_array=[]
    str_array=[]
    
    pattern_array=[i for i in pattern]
    str_array=str.split(" ")
    
    dict={}
    
    for i in range(len(pattern_array)):
        if i in dict:
            if str_array[i]!=dict[pattern_array[i]]:
                return False
        else:
            dict[pattern_array[i]]=str_array[i]
    
    
    
    for keys, values in dict.items():
        pattern=pattern.replace(keys,values+" ")
        
    print(pattern)
    print(str)
    
    return (str==pattern)

str="dog cat cat dog"
pattern="abba"
wordPattern(pattern,str)```



Output:
dog cat cat dog
dog cat cat dog
False

找到了答案,因为我在末尾为我提到的字符串添加了额外的 space

pattern=pattern.replace(keys,values+" "),在末尾为字符串添加了额外的 space。所以,我将其删除。

  • 我们也可以用map来解决这个问题。
  • 在 Python 中,我们不必像在 Java 中那样将 " " 传递给 split 例如:
class Solution:
    def wordPattern(self, pattern, sentence):
        words = sentence.split()
        return tuple(map(pattern.find, pattern)) == tuple(map(words.index, words))