038 · Word Pattern

algorithm
Published

June 17, 2026

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 中所有单词都用单个空格分隔