Сложность: medium
При наличии массива ключевых слов и строки a выделите все ключевые слова [i] жирным шрифтом. Все буквы между тегами <b> и </b> выделяются жирным шрифтом.
Возвращает после добавления тегов, выделенных жирным шрифтом. Возвращаемая строка должна содержать как можно меньшее количество тегов, и теги должны образовывать допустимую комбинацию.
Пример:
Input: words = ["ab","bc"], s = "aabcd"
Output: "a<b>abc</b>d"
👨💻 Алгоритм:
1⃣Создайте массив для хранения флагов, указывающих, какие символы в строке a должны быть выделены жирным шрифтом.
2⃣Пройдите по каждому ключевому слову и отметьте соответствующие позиции в массиве флагов.
3⃣Постройте результирующую строку, добавляя теги <b> и </b> на основе массива флагов.
😎 Решение:
function addBoldTags(keywords, s) {
const n = s.length;
const bold = Array(n).fill(false);
for (const word of keywords) {
let start = s.indexOf(word);
while (start !== -1) {
for (let i = start; i < start + word.length; i++) {
bold[i] = true;
}
start = s.indexOf(word, start + 1);
}
}
let result = '';
let i = 0;
while (i < n) {
if (bold[i]) {
result += '<b>';
while (i < n && bold[i]) {
result += s[i];
i++;
}
result += '</b>';
} else {
result += s[i];
i++;
}
}
return result;
}Ставь 👍 и забирай 📚 Базу знаний