设计算法打印出一串字符的全排列。假设所有的字符都不同。
来源:互联网 发布:c语言指针视频教程 编辑:程序博客网 时间:2024/06/12 14:36
import java.util.ArrayList;
import java.util.List;
public class RandomString {
public static void main(String[] args) {
String s = "abcdefg";
RandomString rs = new RandomString();
String[] create = rs.create(s);
System.out.println("总数:"+create.length);
for (String string : create) {
System.out.println(string);
}
}
private String[] create(String s) {
String[] result = null;
if(s.length() > 1){
List<String> tmp = new ArrayList<String>();
tmp.add(s.substring(0, 1));
List<String> list = ram(tmp,s,1);
result = list.toArray(new String[list.size()]);
}
return result;
}
private List<String> ram(List<String> tmp, String s, int n) {
if(n>=s.length()){
return tmp;
}
List<String> result = new ArrayList<String>();
String b = s.substring(n, n+1);
for (String str : tmp) {
result.add(b+str);
for(int i=1; i<=str.length()-1; i++){
String st = str.substring(0, i) + b + str.substring(i, str.length());
result.add(st);
}
result.add(str+b);
}
n++;
List<String> rs = ram(result,s,n);
return rs;
}
}
import java.util.List;
public class RandomString {
public static void main(String[] args) {
String s = "abcdefg";
RandomString rs = new RandomString();
String[] create = rs.create(s);
System.out.println("总数:"+create.length);
for (String string : create) {
System.out.println(string);
}
}
private String[] create(String s) {
String[] result = null;
if(s.length() > 1){
List<String> tmp = new ArrayList<String>();
tmp.add(s.substring(0, 1));
List<String> list = ram(tmp,s,1);
result = list.toArray(new String[list.size()]);
}
return result;
}
private List<String> ram(List<String> tmp, String s, int n) {
if(n>=s.length()){
return tmp;
}
List<String> result = new ArrayList<String>();
String b = s.substring(n, n+1);
for (String str : tmp) {
result.add(b+str);
for(int i=1; i<=str.length()-1; i++){
String st = str.substring(0, i) + b + str.substring(i, str.length());
result.add(st);
}
result.add(str+b);
}
n++;
List<String> rs = ram(result,s,n);
return rs;
}
}
0 0
- 设计算法打印出一串字符的全排列。假设所有的字符都不同。
- 算法:打印出所有不同的排列
- 打印出字符串中字符的所有排列
- 输入字符串,要求打印出所有字符排列的可能性
- [算法设计-字符的全排列问题]
- 递归实现n个不同字符的所有全排列
- 已知一个有重复字符的字符串,打印其所有不同的字符排列
- 算法笔试题(五):java 输入一个字符串,打印出该字符串中字符的所有排列
- 打印字符串中所有字符的排列
- 给定字符串,打印出组成字符串的字符的全排列
- 输入一个字符串,打印出该字符串中字符的所有排列
- 输入一个字符串,打印出该字符串中字符的所有排列
- 输入一个字符串,打印出该字符串中字符的所有排列。
- 输入一个字符串,打印出该字符串中字符的所有排列
- 输入一个字符串,打印出该字符串中字符的所有排列。
- 输入一个字符串,打印出该字符串中字符的所有排列。
- 输入一个字符串,打印出该字符串中字符的所有排列
- 《剑指Offer》面试题:按字典序打印出该字符串中字符的所有排列
- Android 开源框架Universal-Image-Loader完全解析
- 远程应用xp打印机之坑
- Jquery选择
- Web开发者选择的最佳HTML5/CSS3代码生成器
- 关于android WebViewClient的方法解释
- 设计算法打印出一串字符的全排列。假设所有的字符都不同。
- MATLAB 图释
- mongodb的shell执行脚本-js脚本
- ijkplyaer编译脚本分析(二)——compile-ffmpeg.sh
- Hack3 - 创建定制的ViewGroup
- 无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase的类文件
- 【小镇的技术天梯】理解VMware WorkStation的虚拟网络
- Ubuntu快捷键 终端快捷键
- 分析第一个C语言程序