- 判断字符出现的位置,如果重复出现只取第一次出现的位置
- 分割words,按照相同规则取值,然后判断是否成立
/**
* @param {string[]} words
* @param {string} pattern
* @return {string[]}
*/
var findAndReplacePattern = function(words, pattern) {
let map = new Map();
let indexArray = [];
let patternIndex = '';
for(let i=0;i<pattern.length;i++){
if(!map.has(pattern[i])){
patternIndex += ''+i;
map.set(pattern[i],i)
}else{
let index = map.get(pattern[i]);
patternIndex += ''+index;
}
}
for(let word of words){
map.clear();
let tempIndex = '';
for(let i=0;i<word.length;i++){
if(!map.has(word[i])){
tempIndex += ''+i;
map.set(word[i],i)
}else{
let index = map.get(word[i]);
tempIndex += ''+index;
}
}
if(patternIndex==tempIndex){
indexArray.push(word)
}
}
return indexArray;
};
//console.log(findAndReplacePattern(["abc","deq","mee","aqq","dkd","ccc"],'abb'))
执行结果:通过
执行用时:56 ms, 在所有 JavaScript 提交中击败了93.33%的用户
内存消耗:44.1 MB, 在所有 JavaScript 提交中击败了8.89%的用户
通过测试用例:47 / 47