LeetCode-Day46 (C#) 290. 单词规律

给定一种规律 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 包含了由单个空格分隔的小写字母。

经典双射 ,字典

public class Solution {
    public bool WordPattern(string pattern, string s) {
        string[] arr = s.Split(' ');
        if(pattern.Length != arr.Length) return false;
        Dictionary<char,string> p2s = new Dictionary<char,string>();
        Dictionary<string,char> s2p = new Dictionary<string,char>();
        for(int i = 0; i < pattern.Length; i++){
            if(!p2s.ContainsKey(pattern[i]) && !s2p.ContainsKey(arr[i])){
                p2s[pattern[i]] = arr[i];
                s2p[arr[i]] = pattern[i];
            } else if(p2s.ContainsKey(pattern[i]) && p2s[pattern[i]] != arr[i] ||
            s2p.ContainsKey(arr[i]) && s2p[arr[i]] != pattern[i]
            ) return false;
        }
        return true;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容