1、题目:
给定字符串s=‘abc',所有子集:'a','b','c','ab','ac','bc','abc'。
所有子串:’a','b','c','ab','bc','abc'
2、所有子集代码:
(1)位运算:(输入s为字符串)(输出subStr为迭代器,子集列表)
def SubSet(s): N = len(s) for i in range(2**N): subStr = [] for j in range(N): if(i >> j ) % 2 == 1: subStr.append(s[j]) yield subStr
(2)回溯法:
def subSet(nums): if not nums: return [] res = [] def helper(index , tmp , m): res.append(tmp) for i in range(index , m): helper(i+1,tmp + [nums[i]],m) helper(0,[],len(nums)) return res if __name__=='__main__': nums = ['a','b','c'] print(subSet(nums))
(3)Python的extend功能
def subSet(nums): result = [[]] for x in nums: result.extend([subset + [x] for subset in result]) return result
3、所有子串代码:s为字符串,ss为子串列表
ss=[s[i:i + x + 1] for x in range(len(s)) for i in range(len(s) - x)]