擅长:python、mysql、java
<p>为保持健康,请执行以下递归操作:</p>
<pre><code>def minimum_window_substring(strn, sub, beg=0, fin=0, firstFound=False):
if len(sub) == 0 or len(strn) == 0:
return f'From {beg + 1} to {fin}'
elif strn[0] == sub[0]:
return minimum_window_substring(strn[1:], sub[1:], beg, fin + 1, True)
if not firstFound:
beg += 1
return minimum_window_substring(strn[1:], sub, beg, fin + 1, firstFound)
</code></pre>
<hr/>
<h2>说明:</h2>
<p>基本情况是,如果我们将原始字符串或子字符串的长度设置为0,则停止并打印原始字符串中子字符串的开头和结尾</p>
<p>如果当前字符串的第一个字母相等,那么我们启动计数器(我们用标志“firstFound”固定开头的“beg”),然后递增直到完成(sub是空字符串/原始字符串为空)</p>
<h2>需要考虑的事情/更多解释:</h2>
<p>例如,如果您要求子字符串的第一次出现,例如,如果原始字符串是“<strong>s</strong>ububu<strong>s</strong>ubulum”,子字符串将等于“sbl”,那么当我们第一次点击“s”时,这意味着它将100%从那里开始,因为如果另一个“sbl”在原始字符串中-那么它必须包含剩余的字母,因此我们可以说它们属于第一个<strong>s</strong>。(一个可怕的解释,我很抱歉)我想说的是,如果子字符串出现两次,那么不管发生什么,我们都会选择第一次</p>
<p><strong>注意:</strong>此函数并不真正关心<code>sub</code>-字符串是否包含连续的字母,也不检查字符是否在字符串本身中,因为您说过必须从原始字符串中获取字符。它的优点是,函数可以被赋予多于(或少于)3个字符长的子字符串</p>
<p>当我说“原始字符串”时,我指的是<code>subliminal</code>(或其他输入)</p>