文章目录

  • 算法思想
  • 附上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实现相关推荐

  1. 求字符串全排列的递归算法

    求字符串全排列的递归算法 void permutation(char * p_str, char * p_begin) { if(!p_str || !p_begin) { return; } if( ...

  2. python求字符串中循环节个数

    此题来自今日头条2017秋招真题,题目叫String Shifting,其实就是求字符串中循环节个数 题目描述: 我们规定对一个字符串的shift操作如下: shift("ABCD" ...

  3. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  4. ++递归 字符串全排列_剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

  5. python自学免费教程-python免费入门教程/求完整的Python入门教程

    python不错的入门学习教程或者学习路线?适合新手的 可以去菜鸟教程去学,里面有很多基础入门的教程. 不过你想深入学习的话,学马哥python, 网上有一些免费的教程,课程很系统,讲的通俗易懂 求完 ...

  6. Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题

    字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by     字符串的替换         方法    描述         replac ...

  7. 字符串全排列与组合算法以及八皇后问题

    [剑指offer-题38] 字符串排列 题目 输入一个字符串,输出该字符串的全排列. 思路 数学中的排列思想.算法步骤如下: 求出所有可能出现在第一个位置的字符.将首字符依次与后面的字符交换,即可达到 ...

  8. python免费入门_python免费入门教程/求完整的Python入门教程

    python不错的入门学习教程或者学习路线?适合新手的 可以去菜鸟教程去学,里面有很多基础入门的教程. 不过你想深入学习的话,学马哥python, 网上有一些免费的教程,课程很系统,讲的通俗易懂 求完 ...

  9. c++字符串全排列递归法

    网上关于字符串全排列的代码一大堆,总体而言分为递归法和非递归法两种实现.虽然递归法原理简单,代码简洁,但是我观察众多博客来看,没有把代码讲透,只有透过代码才能看清算法的本质. 问题:输入一字符串(要求 ...

最新文章

  1. MYSQL远程连接数据库
  2. redis如何解决秒杀超卖java_Spring Boot + redis解决商品秒杀库存超卖,看这篇文章就够了...
  3. 《数据结构与算法》课程设计报告——赫夫曼编码/译码器
  4. My favorite books
  5. java编写一个集合类_Java集合类
  6. VB ListBox 添加不重复的值
  7. 四针角oled屏连接arduino_和孩子一起做个显示温湿度的oled屏桌面摆件[青创小电视]...
  8. 不那么SQL的SQL代码(一)if not exists(...) insert
  9. python实现邮件客户端_SMTP邮件客户端Python
  10. iPhone 11 PRO 820-01508-10, 820-01682-08手机点位图
  11. Eclipse编辑器基本设置
  12. c语言抖动算法,游戏中抖动(振动)算法的实现
  13. php多张图片下载(zip压缩)
  14. mac上彻底删除 搜狗输入法 鼠须管输入法
  15. Linux:进程(一)
  16. PMBOK6 核对单和核查表的区别
  17. 【speach】语音信号基础
  18. 无线网络安全工具锦集
  19. additional、extra与supplementary 区别
  20. bz2 — bzip2 压缩

热门文章

  1. IDEA自动生成对象所有set方法
  2. linux修改mysql密码sa_如何修改SA口令,数据库SA密码怎么改?
  3. Warshall算法多源点之间最短路径的算法最短距离
  4. transformer bert seq2seq 深度学习 编码和解码的逻辑-重点
  5. Pytorch nn.init 参数初始化方法
  6. OpenMP用法大全
  7. LeetCode简单题之重新格式化字符串
  8. LeetCode简单题之删除某些元素后的数组均值
  9. SECTIONS bss段初始化分析
  10. App性能分析数据监控