求字符串全排列 python实现
文章目录
- 算法思想
- 附上c语言实现
- 参考
算法思想
输入一个字符串,打印这个字符串中字符的全排列。
eg:
输入:abc
输出:abc acb bac bca cab cba
思路:将求字符串的全排列分解为两步:
第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。
第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印;
具体的算法流程如下
递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串,如果有重复的,然后对结果使用set去重就可以了
#具体代码
def perm(s=''):if len(s) <= 1:return [s]sl = []for i in range(len(s)):for j in perm(s[0:i] + s[i + 1:]):sl.append(s[i] + j)return sldef main():# 可能包含重复的串perm_nums = perm('abb')# 对结果去重no_repeat_nums = list(set(perm_nums))print('perm_nums', len(perm_nums), perm_nums)print('no_repeat_nums', len(no_repeat_nums), no_repeat_nums)passif __name__ == '__main__':main()
附上c语言实现
c语言实现
参考
http://www.cnblogs.com/liang1101/p/6376210.html
https://blog.csdn.net/xkx_1223_xkx/article/details/78002186
转载请注明出处:
CSDN:楼上小宇__home:http://blog.csdn.net/sty945
求字符串全排列 python实现相关推荐
- 求字符串全排列的递归算法
求字符串全排列的递归算法 void permutation(char * p_str, char * p_begin) { if(!p_str || !p_begin) { return; } if( ...
- python求字符串中循环节个数
此题来自今日头条2017秋招真题,题目叫String Shifting,其实就是求字符串中循环节个数 题目描述: 我们规定对一个字符串的shift操作如下: shift("ABCD" ...
- c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...
C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...
- ++递归 字符串全排列_剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- python自学免费教程-python免费入门教程/求完整的Python入门教程
python不错的入门学习教程或者学习路线?适合新手的 可以去菜鸟教程去学,里面有很多基础入门的教程. 不过你想深入学习的话,学马哥python, 网上有一些免费的教程,课程很系统,讲的通俗易懂 求完 ...
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by 字符串的替换 方法 描述 replac ...
- 字符串全排列与组合算法以及八皇后问题
[剑指offer-题38] 字符串排列 题目 输入一个字符串,输出该字符串的全排列. 思路 数学中的排列思想.算法步骤如下: 求出所有可能出现在第一个位置的字符.将首字符依次与后面的字符交换,即可达到 ...
- python免费入门_python免费入门教程/求完整的Python入门教程
python不错的入门学习教程或者学习路线?适合新手的 可以去菜鸟教程去学,里面有很多基础入门的教程. 不过你想深入学习的话,学马哥python, 网上有一些免费的教程,课程很系统,讲的通俗易懂 求完 ...
- c++字符串全排列递归法
网上关于字符串全排列的代码一大堆,总体而言分为递归法和非递归法两种实现.虽然递归法原理简单,代码简洁,但是我观察众多博客来看,没有把代码讲透,只有透过代码才能看清算法的本质. 问题:输入一字符串(要求 ...
最新文章
- MYSQL远程连接数据库
- redis如何解决秒杀超卖java_Spring Boot + redis解决商品秒杀库存超卖,看这篇文章就够了...
- 《数据结构与算法》课程设计报告——赫夫曼编码/译码器
- My favorite books
- java编写一个集合类_Java集合类
- VB ListBox 添加不重复的值
- 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...
- 不那么SQL的SQL代码(一)if not exists(...) insert
- python实现邮件客户端_SMTP邮件客户端Python
- iPhone 11 PRO 820-01508-10, 820-01682-08手机点位图
- Eclipse编辑器基本设置
- c语言抖动算法,游戏中抖动(振动)算法的实现
- php多张图片下载(zip压缩)
- mac上彻底删除 搜狗输入法 鼠须管输入法
- Linux:进程(一)
- PMBOK6 核对单和核查表的区别
- 【speach】语音信号基础
- 无线网络安全工具锦集
- additional、extra与supplementary 区别
- bz2 — bzip2 压缩