题目:给定一个字符串,输出其所有子字符串,例如给定字符串abc,则输出
:a,b,c,d,ab,bc,cd,abc,bcd,abcd。
用递归的思路就是先找所有以a开头的子串,然后再找以b开头的子串,直到d。
其实用python解决非常省事,见下面的代码。
注意python有默认递归1k层的限制,换成递推的写法也可以。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Python 3.6
from itertools import accumulate
def all_sub_string(a_string):
if len(a_string) == 1:
return [a_string]
else:
return list(accumulate(a_string)) + all_sub_string(a_string[1:])
print(all_sub_string('abcd'))
# ['a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd']