题目描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
解题思路:
对于这个问题,我们同样可以采用分解的办法。要求整个字符串的排列,可以看成两步:第一步:求所有可能出现在第一个位置的字符,即把第一个字符与后面的字符依次交换。第二步:固定一个字符,求后面所有字符的排列。
很明显,求后面所有字符的排列,我们仍然可以把所有的字符分成两个部分:后面的字符的第一个字符以及这个字符之后的所有字符,然后把第一个字符逐一与其后的字符交换。因此,这是典型的递归思路。
举例:
编程实现(Java):
import java.util.*;
public class Solution {
ArrayList res=new ArrayList();
public ArrayList Permutation(String str) {
if(str==null||str.length()==0)
return res;
Permutation(str.toCharArray(),0);
Collections.sort(res);
return res;
}
public void Permutation(char[] strArr,int begin){
if(begin==strArr.length-1){
String s=String.valueOf(strArr);
if(!res.contains(s))
res.add(s);
}else{
for(int i=begin;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?