擅长:python、mysql、java
<p>我想我成功了!看看我的递归实现,它在字符串中查找所有回文,在我看来,这不是解决它的最干净的方法(任何使它更简单的建议都会受到欢迎),请随意询问您不清楚的问题:</p>
<pre><code>found = []
def count_palindrome(m_str, start, end, orig_len):
if len(m_str)<2:
return
elif m_str == m_str[::-1]:
if (start, end) not in found:
found.append((start, end))
if len(m_str)<orig_len:
return
counter = count_palindrome(m_str[:-1], start, end-1, orig_len)
counter = count_palindrome(m_str[1:], start+1, end, orig_len)
str_to_work_on = "acac"
count_palindrome(str_to_work_on, 0, len(str_to_work_on), len(str_to_work_on))
for indices in found:
print(str_to_work_on[indices[0]:indices[1]])
</code></pre>
<p>输出:</p>
<pre><code>aca
cac
# I tried it on more complex examples as well and it seems to work fine for my eyes,
# try to challenge it by giving extra complex examples and examine the results.
# let me know if you find something which not work as you expect
</code></pre>