java 从数组中随机抽取两个不相同的字符组合

现有数组String[]str=newString[]{"b","p","m","f","d","t","n","l"};现在要遍历整个数组,从中随机取3个字符,组合成一... 现有数组
String[] str = new String[]{"b","p","m","f","d","t","n","l"};
现在要遍历整个数组,从中随机取3个字符,组合成一个新的字符串。
要把所有可以组合的都列出来,并且不能取到重复的,请问怎么写?
不好意思没说明白,是组合结果不能有重复的,谢谢~
展开
 我来答
百度网友cbad167
2015-03-24 · TA获得超过309个赞
知道小有建树答主
回答量:388
采纳率:66%
帮助的人:296万
展开全部

要随机去的话还是有点复杂。我给你做出来了。

你这个数据太多了。有40320种情况。你可以把数据元素弄少点,试试。

package a;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class MakeString {
//随机变量
private static Random random=new Random();
//Set不重复的保存取到的结果
private static Set<String> list=new HashSet<String>();
//待处理数组
private static String[] str = new String[]{"b","p","m","f","d","t","n","l"};
//计算排列总数
public static int getNumber(int len){
if(len==1){
return 1;
}else{
return len*getNumber(len-1);
}
}
//随机取三个字符组合在一起
public static String getChar(String [] str){
String result="";
result+=str[random.nextInt(str.length)];
result+=str[random.nextInt(str.length)];
result+=str[random.nextInt(str.length)];
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//计算总数
int count=getNumber(str.length);
//如果set里面数据不等于Count,继续计算
while(true){
list.add(getChar(str));
if(list.size()==count)
break;
}
//算完了,输出
for (String s : list) {
System.out.println(s);
}

}

}
百度网友9c743b7
2015-03-24 · TA获得超过925个赞
知道小有建树答主
回答量:360
采纳率:100%
帮助的人:315万
展开全部
import java.util.ArrayList;

public class Traversal {

public static void main(String[] args) {
String[] str = new String[]{"b","p","m","f","d","t","n","l"};
ArrayList<String> allResult = new ArrayList<String>();
for(String s:str){

for(String p:str){
if(p.equals(s)){
continue;
}

for(String q:str){
if(q.equals(s)||q.equals(p)){
continue;
}
allResult.add(s+p+q);
}
}
}
System.out.println(allResult);
}

}
随机应该不是上面那个的意思吧,首先这是个遍历问题,如果真随机取还要什么全部组合,而且计算总数那个方法是取全部字符一次的数量不是3个的数量。不加流程判断让set自己去筛,就是运行时不可估计的复杂次,程序逻辑简单解法已经复杂度很高了,就不要弄不可控的了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzxysx01
2015-03-24
知道答主
回答量:7
采纳率:0%
帮助的人:8639
展开全部
这是要取到的数不能重复,还是组合结果不能重复!
追问
不好意思没说明白,是组合结果不能有重复的,谢谢~
追答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式