擅长:python、mysql、java
<p>作为正则表达式方法的一种替代方法,我做到了:</p>
<pre><code>def find_vowel_index(word):
vows = set(["a", "e", "i", "o", "u"])
for i, letter in enumerate(word):
if letter in vows:
return i
return -1
def bebis(s, repeat=3):
return " ".join([word[0:find_vowel_index(word)+1] * repeat for word in s.split() if find_vowel_index(word) >= 0])
</code></pre>
<p>思考:</p>
<ul>
<li>我为元音做了一个集合,因为对一个集合的“in”测试是一个常量时间操作<code>(O(1))</code></li>
<li>在bebis中添加了一个可选的repeat参数,这样如果你想让单词重复3次以外的次数,那么这样做很容易。在</li>
<li>我不喜欢在<code>bebis</code>中对<code>find_vowel_index</code>的多次调用,它的结构可能更好。在</li>
<li>相对于regex版本的一个折衷是,随着单词变长(单词中的元音“更深”),这一过程会变得更慢。奥托,我猜在简短的词上,正则表达式的开销可能有点昂贵。在</li>
</ul>