用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