首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

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

发布网友

我来回答

5个回答

热心网友

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;

/**
* 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
*
* @param datas
* @param target
*/
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 全排列

热心网友

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));

}
/**
*
* @param target
* @param isDeleteRepeat 是否去掉重复的字母例如abcda去重则为abcd不去重则为abcda即2个a当做不同的字母看
* @return
*/
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楼正解~!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com