欢迎光临散文网 会员登陆 & 注册

千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

2023-07-21 09:59 作者:生活的构图  | 我要投稿

单词和模式的匹配

这个函数首先将输入的字符串分割成单词数组。然后,它检查模式和单词数组的长度是否相等。如果长度不等,那么就返回 false,因为模式和字符串无法匹配。

接下来,函数遍历模式和单词数组。对于每个模式和单词,它首先检查模式是否已经映射到一个单词。如果没有,那么它检查单词是否已经映射到一个模式。如果单词已经映射到一个模式,那么就返回false,因为一个单词不能映射到两个不同的模式。如果模式和单词都没有映射,那么就将模式映射到单词,将单词映射到模式。

如果模式已经映射到一个单词,那么就检查这个单词是否和当前的单词相等。如果不相等那么就返回 false,因为一个模式不能映射到两个不同的单词。

如果函数能够遍历完所有的模式和单词,那么就返回true,表示模式和字符串匹配。

function wordPattern(pattern, str) {

 let patternToWord = {};

 let wordToPattern = {};

 let words = str.split(' ');


 if (pattern.length !== words.length) {

  return false;

 }


 for (let i = 0; i < pattern.length; i++) {

  let p = pattern[i];

  let w = words[i];


  if (!patternToWord[p]) {

   if (wordToPattern[w]) {

    return false;

   }

   patternToWord[p] = w;

   wordToPattern[w] = p;

  } else if (patternToWord[p] !== w) {

   return false;

  }

 }


 return true;

}


console.log(wordPattern("abba", "北京 杭州 杭州 北京")); // true

console.log(wordPattern("aabb", "北京 杭州 杭州 北京")); // false

console.log(wordPattern("baab", "北京 杭州 杭州 北京")); // true




千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)的评论 (共 条)

分享到微博请遵守国家法律