038 · Word Pattern
algorithm
Problem
给定一个字符串 pattern 和一个字符串 s。
请判断:s 中的单词是否完全遵循 pattern 表示的模式。
这里的“遵循模式”指的是:pattern 中的每个字符,都要对应 s 中的一个单词,并且这个对应关系必须满足两个条件:
- 同一个字符每次都必须对应同一个单词
- 不同字符不能对应同一个单词
例如:
pattern = "abba"
s = "dog cat cat dog"
从左到右看:
a -> dog
b -> cat
b -> cat
a -> dog
每个字符和单词之间的对应关系都保持一致,所以答案是:
true
再比如:
pattern = "abba"
s = "dog cat cat fish"
最后一个字符 "a" 本来应该继续对应 "dog",但这里对应的是 "fish",所以答案是:
false
注意,s 中的单词之间用单个空格分隔。判断的是字符和整个单词之间的对应关系,不是字符和字符之间的对应关系。
Examples
示例 1
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
解释:"a" 对应 "dog","b" 对应 "cat",并且这个关系一直保持一致。
示例 2
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
解释:最后一个 "a" 应该对应 "dog",但实际对应的是 "fish"。
示例 3
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
解释:pattern 中所有字符都是 "a",所以所有单词都应该相同,但 s 中出现了不同的单词。
Constraints
- \(1 \leq\)
pattern.length\(\leq 300\) pattern只由小写英文字母组成- \(1 \leq\)
s.length\(\leq 3000\) s只由小写英文字母和空格组成s中不包含前导或尾随空格s中所有单词都用单个空格分隔
Link
→ Solution