博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codewars第十天–Permutations
阅读量:4303 次
发布时间:2019-05-27

本文共 792 字,大约阅读时间需要 2 分钟。

Codewars第十天–Permutations

题目描述:

这是一道常见的全排列题目。需要返回输入字符串的所有排列并删除重复项(如果存在)。
例如:

permutations('a'); # ['a']permutations('ab'); # ['ab', 'ba']permutations('aabb'); # ['aabb', 'abab', 'abba', 'baab', 'baba', 'bbaa']

代码如下,使用递归来进行全排列操作,每一次将一个原字符串中的一个字符当做新的字符串的第一位,后面的子字符串同样以递归的方式进行遍历:

def permutations(string):    if len(string) <= 1:        return string    else:        result = []        for i in range(len(string)):            for j in permutations(string[0:i] + string[i+1:]):                result.append(string[i] + j)        return set(result)

如果不是为了学习,而是实际中需要全排列,可以直接使用itertools 模块中的permutationsiterable 为需要处理的字符串,r 为结果输出的字符串长度。

itertools.permutations(iterable, r)

代码可以改为:

import itertoolsdef permutations(string):    return list("".join(str) for str in set(itertools.permutations(string)))

转载地址:http://dqmws.baihongyu.com/

你可能感兴趣的文章
CURL抓取网页内容并用正则提取。
查看>>
Ngin的配置文件nginx.conf完整配置说明(包括fastcgi和负载均衡设置)
查看>>
浏览器显示网页的机制
查看>>
CSS基础知识
查看>>
Nginx+PHP-FPM优化技巧总结
查看>>
Ubuntu安装Torque教程
查看>>
CentOS下使用tcpdump网络抓包用
查看>>
Java笔试面试题002
查看>>
Java笔试面试题003
查看>>
Java太阳系小游戏分析和源码
查看>>
Java笔试面试题004
查看>>
Java小游戏之打飞机(一)
查看>>
Java笔试面试题005
查看>>
oop_day02_类、重载_20150810
查看>>
Linux常用命令002之搜索命令locate、whereis、which、find、grep
查看>>
oop_day03_内存管理、引用类型数组
查看>>
Java小游戏之打飞机(二)
查看>>
oop_day04_继承、重写_20150812
查看>>
Java笔试面试题006
查看>>
oop_day05_package、public、static、final、内部类
查看>>