290.word-pattern


描述

Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

测试用例

# 1
Input: pattern = "abba", s = "dog cat cat dog"
Output: true

# 2
Input: pattern = "abba", s = "dog cat cat fish"
Output: false

# 3
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false

# 4
Input: pattern = "abba", s = "dog dog dog dog"
Output: false

题解

需要检查字符和单词之间的映射关系(条件是唯一1对1映射)。

var wordPattern = function(pattern, s) {
    // 和之前的字符映射类似
    let tep = {}, flag = true;
    let _s = s.split(' ');
    if(pattern.length !== _s.length) return false;
    for(let i = 0; i < pattern.length; i++) {
        if(!tep[pattern[i]]) tep[pattern[i]] = _s[i];
        else if(tep[pattern[i]] !== _s[i]) return false;
        // 检查是否存在映射关系
        Object.keys(tep).forEach(item => {
            if(tep[item] === _s[i] && item !== pattern[i]) {
                flag = false;
                return;
            }
        });
        if(!flag) return false;
    }
    return true;
};

结果

Accepted

36/36 cases passed (94 ms)

Your runtime beats 30.47 % of javascript submissions

Your memory usage beats 65.61 % of javascript submissions (38.5 MB)


文章作者: 阿汪同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿汪同学 !
评论
  目录