Сложность: 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) {
$n = strlen($s);
$bold = array_fill(0, $n, false);
foreach ($keywords as $word) {
$start = strpos($s, $word);
while ($start !== false) {
for ($i = $start; $i < $start + strlen($word); $i++) {
$bold[$i] = true;
}
$start = strpos($s, $word, $start + 1);
}
}
$result = '';
$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;
}Ставь 👍 и забирай 📚 Базу знаний