永发信息网

Java实现几个字母的所有组合

答案:5  悬赏:40  手机版
解决时间 2021-03-07 20:52
  • 提问者网友:佞臣
  • 2021-03-07 05:56
比如12,那个组合就有1、2、12、21.这样的,用Java实现,a、b就有a、b、ab、ba
最佳答案
  • 五星知识达人网友:神也偏爱
  • 2021-03-07 07:08
1楼扯淡,二楼网上复制的,不完全符合要求,3楼的有些问题,不能输出所有的不是贬低各位
这是我在2楼基础上改的
package main;

import java.util.ArrayList;
import java.util.List;

public class Test {

public static void main(String[] args) {
String s="abcdaaa";
ger(split(s,true));

}

public static List<String> split(String target,boolean isDeleteRepeat){
List<String> list=new ArrayList<String>();
for(int i=0;i<target.length();i++){

if(!(isDeleteRepeat&&list.contains(String.valueOf(target.charAt(i))))){
list.add(String.valueOf(target.charAt(i)));}
}
return list;
}
public static List<String> ger(List<String> string){
List<String> list=new ArrayList<String>();
for(int i=1;i<=string.size();i++){
sort(string,new ArrayList<String>(),i);
}
return list;
}
private static void sort(List datas, List target,int num) {
if (target.size() == num) {
for (Object obj : target)
System.out.print(obj);
System.out.println();
return;
}
for (int i = 0; i < datas.size(); i++) {
List newDatas = new ArrayList(datas);
List newTarget = new ArrayList(target);
newTarget.add(newDatas.get(i));
newDatas.remove(i);
sort(newDatas, newTarget,num);
}
}

}
全部回答
  • 1楼网友:蓝房子
  • 2021-03-07 10:22
最后一个正解
  • 2楼网友:第四晚心情
  • 2021-03-07 09:56
public class test { public static void main(String[] args) { String str = "12"; char a[] = str.toCharArray(); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); mm(a,i); } } public static void mm(char a[], int c) { for (int i = 0; i < a.length; i++) { if(i!=c){ System.out.println(a[c] +""+ a[i]); } } } }
  • 3楼网友:低血压的长颈鹿
  • 2021-03-07 08:26
public void bond(String str) { char[] aa = str.toCharArray(); for(int i = 0; i < aa.size(); i ++){ for(int j = 0; j < aa.size(); j ++){ if (aa[i] == aa[j]) System.out.println(String.valueOf(aa[i])); else System.out.println(String.valueOf(aa[i]) + String.valueOf(aa[j])); } } } 由于没有编译工具,不能保证无错...
  • 4楼网友:旧脸谱
  • 2021-03-07 08:01
1.先给你程序 public class Test{ public static void main(String[] args) { char buf[]={'a','b','c','d'}; perm(buf,0,buf.length-1); } public static void perm(char[] buf,int start,int end){ if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 for(int i=0;i<=end;i++){ System.out.print(buf[i]); } System.out.println(); } else{//多个字母全排列 for(int i=start;i<=end;i++){ char temp=buf[start];//交换数组第一个元素与后续的元素 buf[start]=buf[i]; buf[i]=temp; perm(buf,start+1,end);//后续元素递归全排列 temp=buf[start];//将交换后的数组还原 buf[start]=buf[i]; buf[i]=temp; } } } } 也可以以下方式实现,注意要修改NUM和MAIN中的数组 import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Test { //将NUM设置为待排列数组的长度即实现全排列 private static int NUM = 4; private static void sort(List datas, List target) { if (target.size() == NUM) { for (Object obj : target) System.out.print(obj); System.out.println(); return; } for (int i = 0; i < datas.size(); i++) { List newDatas = new ArrayList(datas); List newTarget = new ArrayList(target); newTarget.add(newDatas.get(i)); newDatas.remove(i); sort(newDatas, newTarget); } } public static void main(String[] args) { String[] datas = new String[] { "a", "b", "c", "d"}; sort(Arrays.asList(datas), new ArrayList()); } } 2.学会GOOGLE,多GOOGLE,比如你的这个可以用这个关键字JAVA 全排列
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯