字符串的排列
来源:互联网 发布:通达信软件官网 编辑:程序博客网 时间:2024/06/07 04:11
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:递归实现,先确定第一个字符,再求后面字符串的全排列。
确定一个字符时将它与后面的交换,同时调整位置。
import java.util.ArrayList;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList list = new ArrayList(); if(str.equals("")) return list; StringBuilder sb = new StringBuilder(); char[] charArray = str.toCharArray(); getAllSort(sb,charArray,list,0); return list; } public void getAllSort(StringBuilder sb,char[] charArray,ArrayList list,int begin){ if(begin == charArray.length && !list.contains(sb.toString())){ list.add(sb.toString()); } for(int i = begin; i < charArray.length; i++){ //得到begin位置上所有可能出现的字符 char temp = charArray[begin]; charArray[begin] = charArray[i]; charArray[i] = temp; //移动元素 for(int j = i;j > begin + 1; j--){ temp = charArray[j]; charArray[j] = charArray[j-1]; charArray[j-1] = temp; } sb.append(charArray[begin]); getAllSort(sb,charArray,list,begin+1); sb.deleteCharAt(begin); //还原元素 for(int j = begin + 1;j < i; j++){ temp = charArray[j]; charArray[j] = charArray[j+1]; charArray[j+1] = temp; } temp = charArray[begin]; charArray[begin] = charArray[i]; charArray[i] = temp; } }}
阅读全文
0 0
- 字符串的全排列
- 字符串的全排列
- 转载 字符串的排列
- 字符串的排列--总结
- 字符串的排列
- 字符串的全排列
- 字符串的排列
- 53.字符串的排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的排列
- 字符串的排列
- 字符串的排列
- 字符串的倒序排列
- 字符串的全排列
- 字符串的排列
- Java练习
- HDU 4300 Clairewd’s message
- 安装win10+ubuntu16.04双系统无法进入桌面问题
- php正则表达式去掉超链接
- 笔记
- 字符串的排列
- Java练习
- exception对象
- access+asp 手注
- mysql语句优化总结
- GIT配置
- sublime 插件 for Markdown
- 【PHP】PHP上传文件,上传图片
- HDU-1568 Fibonacci【数学公式题】