擅长:python、mysql、java
<blockquote>
<p>I can't think of a way to do it without any built-in functions at all.</p>
</blockquote>
<p>我可以:</p>
<pre><code>def find_substring(string, substring):
def starts_with(string, substring):
while True:
if substring == '':
return True
if string == '' or string[0] != substring[0]:
return False
string, substring = string[1:], substring[1:]
n = 0
while string != '' and substring != '':
if starts_with(string, substring):
return n
string = string[1:]
n += 1
return -1
print(find_substring('ATACGTG', 'ACGT'))
</code></pre>
<p>也就是说,避免内置<code>len()</code>,<code>range()</code>,等等。如果不使用内置的<code>len()</code>,我们会失去一些效率,因为我们可以更快地完成。OP指定了迭代,上面使用了它,但是递归变量更紧凑一些:</p>
^{pr2}$