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))
如有错误请指正
我正在尝试使用我为 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))