前几天去笔试的题目,没做出来。
有1,2,2,3,4,5几个数字(6个)。用Java实现他们的全排列输出。
要求:4不在第3位,3和5不挨着。
求助。
前几天去笔试的题目,没做出来。
有1,2,2,3,4,5几个数字(6个)。用Java实现他们的全排列输出。
要求:4不在第3位,3和5不挨着。
求助。
private Set set =new HashSet();
//1,2,2,3,4,5 全排列
//4不在第3位,3和5不挨着
public static void main(String[] args) {
// int tt[]={1,2,2,3,4,5};
// 选择排列的位置
//System.out.println(new ConnectionSort().prefix("abcwerwrwqrewqr","abfsdfwer"));
String a="122345";
new ConnectionSort().fullArray(a,"",0);
}
public void fullArray(String a,String para,int k)
{
String result="";
int l=a.length();
StringBuilder build=new StringBuilder();
build.append(para);
result=build.toString();
char ch=a.charAt(k);
String temp=result;
for(int i=0;i<=k;i++){
result=insertStr(temp,i,ch);
if(k < l-1)
fullArray(a,result,k+1);
if(k+1 == l) //判断组装字符串完成
{
int tem=set.size();
set.add(result);
char t1=result.charAt(3);
if(t1=='4')
{
continue;
}
if("35".equals(result.split("35")) || "53".equals(result.split("53")))
{
continue;
}
if(set.size()>tem)
{
continue;
}
System.out.println(result);
}
}
}
/**
* 插入字符,在第key个位置添加字符
* @param str
* @return
*/
public String insertStr(String str,int key,char ch){
StringBuilder builder=new StringBuilder();
int l=str.length();
if(key==l) // 在最后一个位置添加字符ch
{
builder.append(str);
builder.append(ch);
}else{
builder.append(str.substring(0, key));
builder.append(ch);
builder.append(str.substring(key));
}
return builder.toString();
}