补齐为回文串
【问题】回文串也中镜像串,就是左右对称的串。“a”, “aba”,“baab”, 都是回文串。
给定一个串,至少要添加上多少个字母,才能将它改造为回文串呢?
分析:
这可以通过递归的方法,不断缩小规模来实现。
如果一个串的首尾两个字符相同,那么最小次数就是去掉首尾后的子串的递归问题。
如果不同,有两种改造方案。
a…b ⇒ a…ba
或
a…b => ba…b
选哪个方案取决于,递归子问题哪个的步数小。
### 给定一个串,需要补充多少个字母才能变成镜像串
def mirror(s):
if len(s) < 2: return 0
if s[0] == s[-1]: return mirror(s[1:-1