迭代算法

问题

输入一个字符串,给出该字符串所有的排列

问题分析

非常标准的排列问题,不考虑字符串重复的前提下共有n!种排列,基本思路为从字符串数组中依次取一个字符作为首字符,剩余字符串作为参数使用迭代的方式找出所有可能性

算法实现

# 输入一个字符串,给出该字符串所有的排列
# 复杂度O(n!)
def StringIteration(s):
    data = []
    if len(s) <= 1:
        data.append(s)
        return data
    for k, v in enumerate(s):
        subArr = "".join(s[:k] + s[(k+1):])
        subStrs = StringIteration(subArr)
        for item in subStrs:
            data.append(v+item)
    return data

if __name__ == '__main__':
    s = 'abcde'
    res = StringIteration(s)
    print res, len(res)

你可能感兴趣的:(迭代算法)