单词模式匹配问题详解:字母排列的双射映射
题目描述
给定一个字符串数组 words
和一个模式字符串 pattern
,请找出 words
中所有与 pattern
匹配的单词。
匹配的定义:
如果存在一个字母排列 pp,将模式 pattern
中的每个字母 xx 替换为 p(x)p(x) 后,能够得到某个单词,那么该单词就匹配模式。
换句话说,模式中的每个字母对应单词中的唯一字母,且单词中的字母也只能被模式中唯一字母映射,满足双射(一一对应且互逆)。
解题分析
本质上,这是一个判断两个字符串是否存在一一映射关系(双射)的经典问题。
给定 pattern
和 word
,我们需要验证:
pattern
中的每个字母映射到word
中唯一的字母;word
中的每个字母也只能对应pattern
中唯一的字母。
如果满足这个双向唯一映射,则认为二者匹配。
解题方法
1. 双向映射字典
维护两个哈希表:
p_to