<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LeetCode on Thomas Pinder</title><link>https://thomas-pinder.com/categories/leetcode/</link><description>Recent content in LeetCode on Thomas Pinder</description><generator>Hugo</generator><language>en-uk</language><lastBuildDate>Fri, 20 Dec 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://thomas-pinder.com/categories/leetcode/index.xml" rel="self" type="application/rss+xml"/><item><title>Is A String a Substring of Another String?</title><link>https://thomas-pinder.com/writing/leetcode/substring/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://thomas-pinder.com/writing/leetcode/substring/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Problem:&lt;/strong> Given two strings &lt;code>s&lt;/code> and &lt;code>t&lt;/code>, return &lt;code>True&lt;/code> if &lt;code>s&lt;/code> is a subsequence of &lt;code>t&lt;/code>, or &lt;code>False&lt;/code> otherwise.&lt;/p>
&lt;/blockquote>
&lt;details class="code-fold">
&lt;summary>Testing Function&lt;/summary>
&lt;div class="highlight">&lt;div style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#81a1c1;font-weight:bold">from&lt;/span> &lt;span style="color:#8fbcbb">typing&lt;/span> &lt;span style="color:#81a1c1;font-weight:bold">import&lt;/span> Callable
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#81a1c1;font-weight:bold">def&lt;/span> &lt;span style="color:#88c0d0">test&lt;/span>&lt;span style="color:#eceff4">(&lt;/span>approach&lt;span style="color:#eceff4">:&lt;/span> Callable&lt;span style="color:#eceff4">[[&lt;/span>&lt;span style="color:#81a1c1">str&lt;/span>&lt;span style="color:#eceff4">,&lt;/span> &lt;span style="color:#81a1c1">str&lt;/span>&lt;span style="color:#eceff4">],&lt;/span> &lt;span style="color:#81a1c1">bool&lt;/span>&lt;span style="color:#eceff4">])&lt;/span> &lt;span style="color:#81a1c1">-&amp;gt;&lt;/span> &lt;span style="color:#81a1c1;font-weight:bold">None&lt;/span>&lt;span style="color:#eceff4">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> test1 &lt;span style="color:#81a1c1">=&lt;/span> approach&lt;span style="color:#eceff4">(&lt;/span>&lt;span style="color:#a3be8c">&amp;#34;abc&amp;#34;&lt;/span>&lt;span style="color:#eceff4">,&lt;/span> &lt;span style="color:#a3be8c">&amp;#34;ahbgdc&amp;#34;&lt;/span>&lt;span style="color:#eceff4">)&lt;/span> &lt;span style="color:#81a1c1">==&lt;/span> &lt;span style="color:#81a1c1;font-weight:bold">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> test2 &lt;span style="color:#81a1c1">=&lt;/span> approach&lt;span style="color:#eceff4">(&lt;/span>&lt;span style="color:#a3be8c">&amp;#34;axc&amp;#34;&lt;/span>&lt;span style="color:#eceff4">,&lt;/span> &lt;span style="color:#a3be8c">&amp;#34;ahbgdc&amp;#34;&lt;/span>&lt;span style="color:#eceff4">)&lt;/span> &lt;span style="color:#81a1c1">==&lt;/span> &lt;span style="color:#81a1c1;font-weight:bold">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status &lt;span style="color:#81a1c1">=&lt;/span> &lt;span style="color:#a3be8c">&amp;#34;Pass&amp;#34;&lt;/span> &lt;span style="color:#81a1c1;font-weight:bold">if&lt;/span> test1 &lt;span style="color:#81a1c1;font-weight:bold">and&lt;/span> test2 &lt;span style="color:#81a1c1;font-weight:bold">else&lt;/span> &lt;span style="color:#a3be8c">&amp;#34;Fail&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#81a1c1">print&lt;/span>&lt;span style="color:#eceff4">(&lt;/span>&lt;span style="color:#a3be8c">f&lt;/span>&lt;span style="color:#a3be8c">&amp;#34;&amp;gt;&amp;gt;&amp;gt; Result: `&lt;/span>&lt;span style="color:#a3be8c">{&lt;/span>approach&lt;span style="color:#81a1c1">.&lt;/span>__name__&lt;span style="color:#a3be8c">}&lt;/span>&lt;span style="color:#a3be8c">` - &lt;/span>&lt;span style="color:#a3be8c">{&lt;/span>status&lt;span style="color:#a3be8c">}&lt;/span>&lt;span style="color:#a3be8c">&amp;#34;&lt;/span>&lt;span style="color:#eceff4">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/details>
&lt;h2 id="brute-force-approach">Brute Force Approach&lt;/h2>
&lt;p>A sequence implies that order matters. Therefore, we&amp;rsquo;ll be traversing &lt;code>t&lt;/code> and checking
if we can find the characters of &lt;code>s&lt;/code> in order. The order here helps and it immediately
makes me think that a two-pointer technique is a good fit. I think it is often helpful
to imagine what the brute force solution looks like. In this case, we&amp;rsquo;d be checking
every possible subsequence of &lt;code>t&lt;/code> to see if it matches &lt;code>s&lt;/code>.&lt;/p></description></item></channel></rss>