这里参考借鉴的解法是力扣的官方题解,因为官方题解的代码可读性较差,我换了变量名并且加了很多注释。
在本题中,我们需要判断字符与字符串之间是否恰好一一对应。即任意一个字符都对应着唯一的字符串,任意一个字符串也只被唯一的一个字符对应。在集合论中,这种关系被称为「双射」。
本题需要为pattern
中的每一个字符建立一个到给定字符串s
中每一个单词的映射关系;同时反过来也需要建立一个映射关系。两个相向的映射关系正好构成一个双射,一旦发射不满足双射的冲突,立即返回false
。
class Solution {
public boolean wordPattern(String pattern, String s) {
// 用来映射pattern中的char -> 到字符串中的一个单词
Map<Character, String> ch2str = new HashMap<>();
// 用来映射字符串中的单词 -> pattern中的char
Map<String, Character> str2ch =