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);
}
}
}
这是我在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 全排列
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯