Explicação de Subsequência
Objetivo do desafio: Criar uma função que determina se uma string é uma subsequência de um objeto Map a partir de uma string separada.
Passo a passo da solução: A função isSubsequence()
servirá como auxiliar para a função que você criará no último desafio deste curso. Para um passo a passo da solução, dê uma olhada na lição que precede este desafio, ‘Atualização da pesquisa de palavras’
isSubsequence()
pegará uma string e um objeto Map e retornará true
ou false
dependendo se a string é uma subsequência do objeto Map.
Vamos analisar um exemplo que compara a string 'boon'
com uma forma mapeada da string 'balloon'
:
let word = 'boon';
let mappedObject = {
b: [0],
a: [1],
l: [2, 3],
o: [4, 5],
n: [6]
}
isSubsequence(word, mappedObject)
Isso deve retornar true
, porque ‘boon’ é uma subsequência do ‘balloon’. Todas as letras em ‘boon’ aparecem em balloon e estão na mesma ordem.
Este desafio pode ser o mais complicado do curso! Deixe qualquer dúvida que você tenha abaixo, junto com capturas de tela de seu código, e nosso pessoal pode ajudá-lo a encontrar a solução.
Mais uma vez, dê uma olhada também na lição que precede este desafio, que decomporá a função passo a passo.
Boa sorte, Gafanhotos!
Código Adicional (código oculto executado antes do código do desafio):
[detalhes]
let dictionaryWord = pickRandom(['lull', 'hub', 'boo', 'quack', 'balloon', 'hall']);
function findNextIndex(mappedIndices, lastMatchedIndex) {
for (let index of mappedIndices) {
if (index >= lastMatchedIndex) {
return index + 1;
}
}
return false;
};
function makeMap(string) {
let map = {};
for (let i = 0; i < string.length; i++) {
map[string[i]]
? map[string[i]].push(i)
: map[string[i]] = [i];
}
return map;
};
let stringSequence ='hullaballoo';
[/details]