面试题28:字符串的排列

简介:
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。

这是一个典型的递归问题,考虑如何将复杂问题分解成简单问题,最后通过递归解决。我们肯定有这样的经验,自己在写abc的全排列的时候,肯定会想首先确定第一个字符,然后考虑后面有什么排列,比如确定第一个字符为a,那么剩下的b和c有两种排列,分别是bc和cb,那么以a开头的字符串有abc,acb这两种排列。这就是我们下面程序所需要用到的解题思路。

  1. 将字符串排列分解为字符串的第一个字符以及其后的剩余字符。剩余字符串又可以按照前面的思路来解决,分解为第一个字符和剩余字符串。当最后只有一个字符的时候,程序就到达出口,这个时候输出字符串,就是其中的一个排列。
  2. 字符串abc,那么可能出现在第一个字符的可能性有三种,我们只需要每次交互第一个字符,然后计算剩余字符串的排列即可。采用递归思路解决问题。

代码实例:

View Code

 

 本文转自xwdreamer博客园博客,原文链接http://www.cnblogs.com/xwdreamer/archive/2012/04/27/2474204.html,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
31 0
|
1月前
面试题 08.08:有重复字符串的排列组合
面试题 08.08:有重复字符串的排列组合
33 0
|
20天前
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
1月前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
39 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
1月前
|
索引 Python Go
【python学习】字符串详解,面试必问公司的问题
【python学习】字符串详解,面试必问公司的问题
|
1月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
39 0
|
1月前
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩
11 0
|
1月前
|
算法 测试技术 索引
力扣面试经典题之数组/字符串(二)
力扣面试经典题之数组/字符串(二)
18 0
|
1月前
|
存储 Java 编译器
Java字符串变量声明与赋值的常见面试题——完整剖析
Java字符串变量声明与赋值的常见面试题——完整剖析
25 1
|
1月前
|
算法
【面试算法——动态规划 19】最长回文子序列&& (hard)让字符串成为回文串的最少插入次数
【面试算法——动态规划 19】最长回文子序列&& (hard)让字符串成为回文串的最少插入次数