{"id":232509,"date":"2023-01-20T19:02:00","date_gmt":"2023-01-20T16:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232509"},"modified":"2023-02-05T13:23:33","modified_gmt":"2023-02-05T10:23:33","slug":"o-algoritmo-para-tornar-as-palavras-em-negrito-em-html","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/o-algoritmo-para-tornar-as-palavras-em-negrito-em-html\/","title":{"rendered":"O algoritmo para tornar as palavras em negrito em HTML"},"content":{"rendered":"<blockquote>\n<p>Dado um conjunto de palavras-chave e uma string S, fa\u00e7a todas as apari\u00e7\u00f5es de todas as palavras-chave em negrito. Quaisquer letras entre <strong>e<\/strong> as tags ficam em negrito.<\/p>\n<p>A string retornada deve usar o menor n\u00famero poss\u00edvel de tags e, claro, as tags devem formar uma combina\u00e7\u00e3o v\u00e1lida.<\/p>\n<p>Por exemplo, considerando que palavras = [&#8220;ab&quot;, &#8220;bc&#8221;] e S = &#8220;aabcd&#8221;, devemos retornar &#8220;a <strong>abc<\/strong> d&#8221;. Observe que retornar &#8220;a <strong>a<em><\/em><\/strong> b<em><\/em>cd&#8221; usaria mais tags, ent\u00e3o est\u00e1 incorreto.<\/p>\n<p>Observa\u00e7\u00e3o:<\/p>\n<ul>\n<li>palavras tem comprimento no intervalo [0, 50].<\/li>\n<li>words[i] tem comprimento no intervalo [1, 10].<\/li>\n<li>S tem comprimento no intervalo [0, 500].<\/li>\n<li>Todos os caracteres em words[i] e S s\u00e3o letras min\u00fasculas.<\/li>\n<\/ul>\n<\/blockquote>\n<h3>Fa\u00e7a String Bold usando o algoritmo Bruteforce<\/h3>\n<p>Sem a exig\u00eancia do mais curto, podemos colocar negrito em todas as ocorr\u00eancias das palavras da lista. Como recebemos a <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-adicionar-o-google-search-engine-ao-wordpress-blog-widget-codigo-html-simples\/\" title=\"string HTML\">string HTML<\/a> original, podemos marcar em negrito para cada caractere que aparece nas palavras em negrito.<\/p>\n<p>Portanto, com espa\u00e7o O(N) e O(NM) onde N \u00e9 o tamanho da string e M \u00e9 o comprimento total da string em negrito, o <a href=\"https:\/\/helloacm.com\/algorithms-to-find-the-three-numbers-in-array-that-sum-up-to-zero-3sum\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">algoritmo de for\u00e7a bruta<\/a> C++ a seguir inserir\u00e1 as tags HTML em negrito menos que satisfa\u00e7am o requisito.<\/p>\n<pre><code>class Solution {\npublic:\n\u00a0 \u00a0 string boldWords(vector&lt;string&gt;&amp; words, string S) {\n\u00a0 \u00a0 \u00a0 \u00a0 int n = S.size();\n\u00a0 \u00a0 \u00a0 \u00a0 vector&lt;bool&gt; bold(n, false);\n\u00a0 \u00a0 \u00a0 \u00a0 for (const auto &amp;s: words) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (int i = 0; i + s.size() - 1 &lt; n; ++ i) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 bool ok = true;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (int k = 0; k &lt; s.size(); ++ k) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (s[k] != S[i + k]) { \/\/ bold string s not found in the string\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ok = false;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (ok) { \/\/ it is bold\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (int k = 0; k &lt; s.size(); ++ k) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 bold[i + k] = true; \/\/ mark the character bold\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 string ans = \"\";\n\u00a0 \u00a0 \u00a0 \u00a0 for (int i = 0; i &lt; n; ++ i) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ bold start boundary\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (bold[i] &amp;&amp; (i == 0 || !bold[i - 1])) ans += \"&lt;b&gt;\"; \n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ans += S[i];\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ bold end boundary\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (bold[i] &amp;&amp; (i == n - 1 || !bold[i + 1])) ans += \"&lt;\/b&gt;\";\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 return ans;\n\u00a0 \u00a0 }\n};<\/code><\/pre>\n<p>Depois que os caracteres em negrito s\u00e3o marcados, redigitalizamos a string e procuramos os limites e inserimos as tags de acordo.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O algoritmo para tornar as palavras em negrito em HTML<\/p>\n","protected":false},"author":1,"featured_media":224460,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,837,920,846],"tags":[1170],"class_list":["post-232509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-outro","category-tutoriais","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232509"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232509\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224460"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}