我们需要编写一个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