Appearance
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;
}
}
AlgoPress