给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。字符串str符合pattern定义的规律输出true,字符串str不符合pattern定义的规律输出false. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例 2: 输入:pattern = "abba", str = "dog cat cat fish" 输出: false 示例 3: 输入: pattern = "aaaa", str = "dog cat cat dog" 输出: false 输入格式: 输入' pattern' 和' str'字符串,pattern 代表规律模式; str 是输入字符串。 输出格式: 输出一个布尔值(true/false),字符串str符合pattern定义的规律输出true,字符串str不符合pattern定义的规律输出false。
时间: 2024-02-18 14:02:11 浏览: 69
好的,我理解了你的问题。这是一个简单的字符串匹配问题。可以使用哈希表来解决这个问题。我们将模式字符串中的每个字符都映射到输入字符串中的一个单词。如果我们在哈希表中看到一个字符已经被映射到了不同的单词,那么我们就知道这个匹配不是一个合法的模式。以下是一个Python实现的示例代码:
```python
def wordPattern(pattern: str, s: str) -> bool:
words = s.split()
if len(pattern) != len(words):
return False
p_to_w = {}
w_to_p = {}
for p, w in zip(pattern, words):
if p in p_to_w and p_to_w[p] != w:
return False
if w in w_to_p and w_to_p[w] != p:
return False
p_to_w[p] = w
w_to_p[w] = p
return True
```
在这个代码中,我们首先将输入字符串s分割成单词列表。然后,我们检查模式字符串pattern和单词列表words的长度是否相同。如果它们的长度不同,那么这个匹配肯定不是合法的模式。
接下来,我们创建两个哈希表p_to_w和w_to_p。我们将模式字符串pattern中的每个字符p和单词列表words中的每个单词w逐个匹配。如果我们在p_to_w哈希表中看到一个字符已经被映射到了不同的单词,那么我们就知道这个匹配不是一个合法的模式。同样,如果我们在w_to_p哈希表中看到一个单词已经被映射到了不同的字符,那么我们也知道这个匹配不是一个合法的模式。
最后,如果我们成功地遍历了整个模式字符串和单词列表,并且没有发现任何不匹配,那么我们就可以确定这个匹配是一个合法的模式。
阅读全文