问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求JAVA算法:这里有A,B,C,D,E五个字符串,求出五个字符串的所有任意组合(五个字符串可以不同时出现)

发布网友 发布时间:2022-04-10 00:42

我来回答

5个回答

懂视网 时间:2022-04-10 05:04

java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /* * 统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2) * * 选中TreeMap的原因是:key不重复且按顺序排序取出 * * 思路: * 1.将字符串abacbacdadbc转换成字符数组 * 2.分别取字符,与TreeMap中的key进行比较 * 2.1 如果TreeMap中存在对应的字符,则取出并自增,再存入TreeMap * 2.2 如果TreeMap中不存在对应的字符,则直接存入该字符,value=1 */ public class A3B1C2_TreeMapTest { public static void main(String[] args) { TreeMap<String, Integer> tm=new TreeMap<>(); String string="abacbacdadbc"; char[] ch=string.toCharArray(); for(char r :ch){ //tm.put(String.valueOf(r), 1); //System.out.println(r); if(compareKey(r, tm)) { int i=tm.get(String.valueOf(r)); i++; tm.put(String.valueOf(r), i); }else { tm.put(String.valueOf(r), 1); } } System.out.println(tm); Set<Map.Entry<String, Integer>> entrySet=tm.entrySet(); Iterator<Map.Entry<String, Integer>> iterator=entrySet.iterator(); while(iterator.hasNext()){ Map.Entry<String, Integer> me=iterator.next(); String key=me.getKey(); int value=me.getValue(); System.out.print(key+"("+value+")"); } } public static boolean compareKey(char c,TreeMap<String, Integer> treeMap){ if (treeMap.containsKey(String.valueOf(c))) { return true; } return false; } }

 

java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)

标签:dad   boolean   输出   ati   sys   color   blog   ++   统计   

热心网友 时间:2022-04-10 02:12

有些人的用复制数列,算法低效、粗野浪费。

给你个、 高效、简洁而且泛型通用的全组合:
public class Test{
public static void main(String[] args) {
String[] a = { "A", "B", "C", "D", "E" };
for(int i=1;i<=a.length;i++){
System.out.println(a.length+"选"+i);
String[] res=new String[i];
combine(a,0,res,0);
}
}
final static public void combine(final Object a[], final int a_pos,final Object rs[], final int rs_pos)
{
if(rs_pos>=rs.length){
for(int i=0;i<rs.length;i++) System.out.print(rs[i]+" ");
System.out.println();
}else for(int ap=a_pos; ap<a.length; ap++){
rs[rs_pos]=a[ap]; combine(a,ap+1,rs,rs_pos+1);
}
}
}
=======
5选1
A
B
C
D
E
5选2
A B
A C
A D
A E
B C
B D
B E
C D
C E
D E
5选3
A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E
5选4
A B C D
A B C E
A B D E
A C D E
B C D E
5选5
A B C D E

热心网友 时间:2022-04-10 03:30

你看一下这个代码吧。1-5长度的所有不重复组合。
--------------------------------------------------------------------
import java.util.ArrayList;
import java.util.Arrays;
public class T {
private String[] array = { "A", "B", "C", "D", "E" };
public static void main(String[] args) {
new T().execute();
}
public void execute() {
ArrayList<String> list = new ArrayList();
list.addAll(Arrays.asList(array));
for (int len = 1; len <= 5; len++) {
combination(list, "", len);
}
}
public void combination(ArrayList<String> list, String result, int len) {
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
result += str;
if (result.length() == len) {
System.out.println(result);
} else {
ArrayList<String> copylist = (ArrayList<String>) list.clone();
copylist.remove(str);
combination(copylist, result, len);
}
result = result.substring(0, result.length() - 1);
}
}
}

热心网友 时间:2022-04-10 05:04

public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.init();
}
public void init(){
String arr[] = new String[5];
arr[0] = "A";
arr[1] = "B";
arr[2] = "C";
arr[3] = "D";
arr[4] = "E";
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
for (int k = 0; k < arr.length; k++) {
for (int m = 0; m < arr.length; m++) {
for (int n = 0; n < arr.length; n++) {
String ssString = arr[i]+arr[j]+arr[k]+arr[m]+arr[n];
System.out.println(ssString);
}
}
}
}
}
}
}追问这里算出的结果出现同一字符串重复。我还需要比如:AB AC AD ABC ABD BA CA DA CBA BCA 等等之类的组合,同一字符串不在一个组合里重复出现,一个组合也不需要含有全部字符,请帮忙在看看!!

热心网友 时间:2022-04-10 06:56

递归求组合 自己去思考 思路已经给你了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 德国盖米与美国博雷的电动蝶阀(DN40)哪个性价比更高? gemu阀上的PB代表什么 德国盖米GEMU蝶阀 【很长】日文对话翻译(软件翻译免进) 天上的繁星后一句话 jahre 德语怎么读 德国哲学家康德关于头上的星空和心中的道德论述 进口卫生级阀门阀门除了盖米外,还有什么品牌好,进 听说进口隔膜阀除了英国SAUNDERS,德国盖米,还有ITT、FISHER、FLOWSEVER,这几家产品的性价比怎样?谢谢 看到很多打着进口气动执行器的厂家,有没有使用过感觉质量可以的品牌推荐下? 德国什么阀门好 博雷气动阀门和盖米气动阀门哪个好? 气动蝶阀执行器配德国牌子 中国八大菜系分别有哪些? 盖米阀门的质量可不可靠 中国八大菜系分别是哪些? 德国盖米哪种阀门好 盖米的介绍 德国阀门品牌 中国的菜系有哪些?各有什么特色?有一些什么名菜(图片)? 金元宝家常做法,正宗金元宝怎么做 金元宝是怎么做的,视平 背水桶关不住水是什么原因 中石化成品油管道述职报告怎么写 e5800 e6300那个更好点,能否对比的清楚点? 被称作“金元宝”的小吃怎么做? 马桶背水桶漏了怎么办 英特尔CPU有多少种接口类型? 金元宝和金币用纸怎么做啊 背水桶猜一成语 背水桶猜成语 充电式背水桶不充电怎么充不进电? 三十多岁女人背水桶包好看还是枕头包好看 - 信息提示 这个电脑值多少钱全新的? 磁带发明者是谁 给死人烧的金元宝怎么叠? 邱比特拼接处理器价格 盒式磁带发明者劳德维克·奥登司去世,他的发明具有什么意义? 高个男生背水桶包好看吗?本人178拜托了各位 谢谢