用JavaScript构成最长的单词

问题

我们需要编写一个JavaScript函数,该函数将随机的英语字母字符串str作为第一个参数,并将字符串数组arr作为第二个参数。

我们函数的任务是尝试从字符串str中删除一些字符,并检查数组arr中也可以形成哪个最长的单词。我们的函数应该返回最长的字符串。

如果不存在这样的字符串,我们应该返回一个空字符串。

例如,如果函数的输入为-

const str = 'sdgfdfghdjh';

const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];

那么输出应该是-

const output = 'gfdfg';

输出说明:

虽然可以通过删除字符串中的字符来形成数组的第一和第二个元素,但是'gfdfg'是最长的字符串(5),可以从字符串str中形成。

示例

为此的代码将是-

const str = 'sdgfdfghdjh';

const arr = ['sdf', 'fghj', 'gfdfg', 'absc', 'a', 'hasl'];

const findLongestWord = (str = '', arr = []) => {

   arr.sort((a, b) => {

      if (a.length !== b.length) {

         returnb.length- a.length;

      };

      return a.localeCompare(b);

   });

   for(const word of arr){

      let index = -1;

      for(const char of word){

         index = str.indexOf(char, index + 1);

         if(index < 0){

            break;

         };

      };

      if (index >= 0){

         return word;

      };

   };

   return '';

};

console.log(findLongestWord(str, arr));

代码说明:

我们经历的步骤是-

  • 首先按长度对数组arr进行排序,然后按词法排序。

  • 循环遍历arr中的每个单词,如果每个单词的字符都不在字符串str中,那么我们就简单地返回。

  • 如果每个单词都匹配,那么我们将返回该单词。

并且由于我们已经对字典进行了排序,因此我们可以保证第一个匹配项是我们的答案。

输出结果

控制台中的输出将为-

gfdfg

以上是 用JavaScript构成最长的单词 的全部内容, 来源链接: utcz.com/z/329527.html

回到顶部