Skip to content
本页目录

0290-单词规律

https://leetcode.cn/problems/word-pattern

给定一种规律 pattern和一个字符串str,判断 str 是否遵循相同的规律。

这里的遵循指完全匹配,例如,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

示例4:

输入: pattern = "abba", str = "dog dog dog dog"
输出: false

说明: 你可以假设pattern只包含小写字母,str包含了由单个空格分隔的小写字母。

思路

采用hash表建立联系,如果 key value是相等的,那么表示是符合规律的

参考代码

csharp
public class Solution {
    public bool WordPattern(string pattern, string s) {
    	string[] strs = s.Split(" ");
    	if(pattern.Length != strs.Length){
    		return false;
    	}
    	//一一对应,建立两个字典
    	Dictionary<char,string> dict = new Dictionary<char,string>();
    	Dictionary<string,char> dict2 = new Dictionary<string,char>();
    	for(int i=0; i<pattern.Length; i++){
    		char key = pattern[i];
    		if(!dict.ContainsKey(key)){
    			dict.Add(key,strs[i]);
    		}
    		else{
    			if(dict[key] != strs[i]){
    				return false;
    			}
    		}

    		string key2 = strs[i];
    		if(!dict2.ContainsKey(key2)){
    			dict2.Add(key2,pattern[i]);
    		}
    		else{
    			if(dict2[key2] != pattern[i]){
    				return false;
    			}
    		}
    	}
    	return true;
    }
}

Released under the MIT License.