{"id":232506,"date":"2023-01-20T18:24:00","date_gmt":"2023-01-20T15:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232506"},"modified":"2023-02-05T13:08:19","modified_gmt":"2023-02-05T10:08:19","slug":"algoritmi-sanojen-lihavointiin-html-ssae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/algoritmi-sanojen-lihavointiin-html-ssae\/","title":{"rendered":"Algoritmi sanojen lihavointiin HTML:ss\u00e4"},"content":{"rendered":"<blockquote>\n<p>Kun on annettu joukko avainsanoja sanoja ja merkkijono S, tee kaikki avainsanat S lihavoidulla. <strong>Kaikki ja<\/strong> -tunnisteiden v\u00e4liset kirjaimet lihavoittuvat.<\/p>\n<p>Palautettavan merkkijonon tulee k\u00e4ytt\u00e4\u00e4 mahdollisimman v\u00e4h\u00e4n tageja, ja tietysti tagien tulee muodostaa kelvollinen yhdistelm\u00e4.<\/p>\n<p>Koska esimerkiksi sanat = [&quot;ab&quot;, &quot;bc&quot;] ja S = &quot;aabcd&quot;, meid\u00e4n pit\u00e4isi palauttaa &quot;a <strong>abc<\/strong> d&quot;. Huomaa, ett\u00e4 &quot;a <strong>a<em><\/em><\/strong> b<em><\/em>cd&quot;:n palauttaminen k\u00e4ytt\u00e4isi enemm\u00e4n tageja, joten se on v\u00e4\u00e4rin.<\/p>\n<p>merkint\u00e4:<\/p>\n<ul>\n<li>sanojen pituus on alueella [0, 50].<\/li>\n<li>sanojen [i] pituus on alueella [1, 10].<\/li>\n<li>S:n pituus on alueella [0, 500].<\/li>\n<li>Kaikki merkit sanoissa[i] ja S ovat pieni\u00e4 kirjaimia.<\/li>\n<\/ul>\n<\/blockquote>\n<h3>Lihavoita merkkijonoa k\u00e4ytt\u00e4m\u00e4ll\u00e4 Bruteforce-algoritmia<\/h3>\n<p>Ilman lyhimm\u00e4n vaatimusta voimme lihavoida kaikki luettelon sanat. Koska saamme alkuper\u00e4isen <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-lisaetae-google-hakukone-wordpress-blogiin-widget-yksinkertainen-html-koodi\/\" title=\"HTML-merkkijonon\">HTML-merkkijonon<\/a>, voimme merkit\u00e4 lihavoinnin jokaiselle lihavoidussa sanassa n\u00e4kyv\u00e4lle merkille.<\/p>\n<p>Joten O(N) v\u00e4lily\u00f6nnill\u00e4 ja O(NM):ll\u00e4, jossa N on merkkijonon koko ja M on lihavoitun merkkijonon kokonaispituus, seuraava C++ <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\">bruteforce -algoritmi<\/a> lis\u00e4\u00e4 v\u00e4hiten vaatimuksen t\u00e4ytt\u00e4vi\u00e4 HTML-lihavoituja tageja.<\/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>Kun lihavoidut merkit on merkitty, skannaamme merkkijonon uudelleen ja etsimme rajat ja lis\u00e4\u00e4mme tunnisteet vastaavasti.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Algoritmi sanojen lihavointiin HTML:ss\u00e4<\/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":[719,895,917,834,843],"tags":[1166],"class_list":["post-232506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-muut","category-opas-aloittelijoille","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=232506"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232506\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224460"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=232506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=232506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=232506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}