616. Add Bold Tag in String
June 24, 2025
04:33 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Bạn được cho một chuỗi s và một mảng các từ words. Nhiệm vụ là thêm cặp tag <b> và </b> để bọc các đoạn con của s xuất hiện trong words. Nếu các đoạn cần bôi đen bị chồng lắp hoặc liền kề nhau, bạn cần gộp chúng lại thành một cặp tag duy nhất
Ví dụ
s = "abcxyz123", words = ["abc","123"]"<b>abc</b>xyz<b>123</b>"Approach
<b>:s và sử dụng isBold để xác định vị trí cần mở/đóng tag <b>.false sang true (hoặc là ký tự đầu tiên cần bôi đen), thêm <b>.true sang false (hoặc là ký tự cuối cùng cần bôi đen), thêm </b>.Ưu điểm
Time and space complexity
words (duyệt m lần), bạn kiểm tra tất cả các vị trí bắt đầu hợp lệ trong s (tối đa n lần cho mỗi từ), và so sánh chuỗi con độ dài k.Solution
1function addBoldTag(s: string, words: string[]): string {
2 const n = s.length;
3 const is_bold: boolean[] = Array(n).fill(false);
4 for (const word of words) {
5 let start = 0;
6 while (start <= n - word.length) {
7 if (s.substring(start, start + word.length) === word) {
8 for (let i = start; i < start + word.length; i++) is_bold[i] = true;
9 }
10 start++
11 }
12 }
13
14 let res = '';
15 let i = 0
16 while (i < n) {
17 if (is_bold[i] && (i === 0 || !is_bold[i - 1])) {
18 res += '<b>';
19 }
20
21 res += s[i];
22 if (is_bold[i] && (i === n - 1 || !is_bold[i + 1])) {
23 res += '</b>'
24 }
25 i++
26 }
27 return res
28};!is_bold[i + 1] Nếu ký tự tiếp theo không bôi đen, tức là kết thúc đoạn bôi đen hiện tại, phải đóng tag