{"id":232289,"date":"2023-01-20T19:14:00","date_gmt":"2023-01-20T16:14:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232289"},"modified":"2023-02-05T12:47:23","modified_gmt":"2023-02-05T09:47:23","slug":"el-algoritmo-para-poner-palabras-en-negrita-en-html","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/el-algoritmo-para-poner-palabras-en-negrita-en-html\/","title":{"rendered":"El algoritmo para poner palabras en negrita en HTML"},"content":{"rendered":"<blockquote>\n<p>Dado un conjunto de palabras clave y una cadena S, haga todas las apariciones de todas las palabras clave en negrita S. Cualquier letra entre las etiquetas <strong>y<\/strong> se pone en negrita.<\/p>\n<p>La cadena devuelta debe usar la menor cantidad posible de etiquetas y, por supuesto, las etiquetas deben formar una combinaci\u00f3n v\u00e1lida.<\/p>\n<p>Por ejemplo, dado que las palabras = [&quot;ab&quot;, &quot;bc&quot;] y S = &quot;aabcd&quot;, deber\u00edamos devolver &quot;a <strong>abc<\/strong> d&quot;. Tenga en cuenta que devolver &quot;a <strong>a<em><\/em><\/strong> b<em><\/em>cd&quot; usar\u00eda m\u00e1s etiquetas, por lo que es incorrecto.<\/p>\n<p>Nota:<\/p>\n<ul>\n<li>palabras tiene una longitud en el rango [0, 50].<\/li>\n<li>palabras[i] tiene una longitud en el rango [1, 10].<\/li>\n<li>S tiene una longitud en el rango [0, 500].<\/li>\n<li>Todos los caracteres de las palabras [i] y S son letras min\u00fasculas.<\/li>\n<\/ul>\n<\/blockquote>\n<h3>Hacer String Bold usando el algoritmo de fuerza bruta<\/h3>\n<p>Sin el requisito de la m\u00e1s corta, podemos poner en negrita todas las apariciones de las palabras en la lista. Como se nos da la <a href=\"https:\/\/wordpress.mediadoma.com\/es\/como-agregar-el-motor-de-busqueda-de-google-al-blog-de-wordpress-widget-codigo-html-simple\/\" title=\"cadena HTML\">cadena HTML<\/a> original, podemos marcar en negrita cada car\u00e1cter que aparece en las palabras en negrita.<\/p>\n<p>Entonces, con el espacio O(N) y O(NM) donde N es el tama\u00f1o de la cadena y M es la longitud total de la cadena en negrita, el siguiente <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 fuerza bruta<\/a> de C++ insertar\u00e1 la menor cantidad de etiquetas HTML en negrita que satisfagan el 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>Despu\u00e9s de marcar los caracteres en negrita, volvemos a escanear la cadena y buscamos los l\u00edmites, e insertamos las etiquetas en consecuencia.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El algoritmo para poner palabras en negrita en 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":[892,716,831,914,840],"tags":[1172],"class_list":["post-232289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-guia-para-principiantes","category-otro","category-tutoriales","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/232289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=232289"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/232289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224460"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=232289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=232289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=232289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}