永发信息网

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

答案:5  悬赏:40  手机版
解决时间 2021-03-07 20:52
比如12,那个组合就有1、2、12、21.这样的,用Java实现,a、b就有a、b、ab、ba
最佳答案
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);
}
}

}
全部回答
最后一个正解
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]); } } } }
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])); } } } 由于没有编译工具,不能保证无错...
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 全排列
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
高考是为了什么?又一次迷茫了,即便我努力了
是否可补送礼金?
卖加见念什么
上淘宝买东西的时候为什么却显示银行卡不能用
本科毕业,工作数年,现在想再拿个其他专业的
珠益运动器材有限公司地址在什么地方,想过去
如何在word里面编辑将A4纸分成对等的两页?
冰糖心苹果树能在北方种植吗
影驰GTX650黑将玩LOL有压力吗?
李老师买了一套经济适用房,他准备在地面上铺
怎么查自己所有的银行的信用度
火影手游还差8个蝎碎片金币只够一次十连单抽
安徽农村商业银行和徽商银行哪个好
天和新乐汇在什么地方啊,我要过去处理事情
藦托车换了缸铜和环为什么不能起动
推荐资讯
网上购物是什么意思
兴源建筑工程有限公司贵阳分公司地址在什么地
中国邮政(杏八村村邮站)我想知道这个在什么地
想看类似《寸芒》的书
if(AND(A10,A1=MAX($A$1:$E$300)),500,)当月
为什么得近视眼睛会凸出来?长期戴眼镜眼睛怎
狮跑后备箱电源接口是多少安培的,有人知道吗
电脑下载的新概念英语MP3放在手机的哪个文件
新学期新目标手抄报
不用花钱自己怎么做才能永久简单而快速地去除
疯狂看图猜成语 第150关左边单人旁中间一个渐
离婚后,房产证上还是夫妻双方的名字,贷款没
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?