/**
* 题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,
* 打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
*/
public void method1(){
String[] arr = new String[]{"1","2","3","4","5"};
System.out.println(33);
for(int i=122345;i<543221;i++){
boolean flg = true;
for(int k=0;k<arr.length;k++){
if((""+i).indexOf(arr[k]) ==-1){
flg = false;
}
}
if((""+i).indexOf(2+"") == (""+i).lastIndexOf(2+"")){
flg = false;
}
if((""+i).indexOf(35+"") !=-1 || (""+i).indexOf(53+"") !=-1){
flg = false;
}
if((i+"").charAt(2) == '4'){
flg = false;
}
if(flg)
System.out.println(i);
}
}
/**
* 兔子生兔子问题。
简单描述: f3=f1+f2;
例子: 1,1,2,3,5,8,13......
*/
public int produceRabbit(int i){
if(i ==1 || i==2){
return 1;
}
return produceRabbit(i-2)+produceRabbit(i-1);
}
/**
*
*要求前提是不允许使用util包以及之外的类,即任何集合类都不允许使用。
* 写出的算法效率越高,此题得分越高,大家可以试一下。题目是输入一串已经排序好的数组,
* 输出消除重复数之后的数组。
* 例如: 输入{ 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5 };输出{ 1, 2, 3, 4, 5 };
*/
public void removeRup(){
int[] arr = new int[]{1,2,2,2,3,3,3,4,4,4,5,5,5};
StringBuffer sb = new StringBuffer();
sb.append("");
for(int i=0;i<arr.length;i++){
if(sb.toString().indexOf(arr[i]+"") ==-1){
sb.append(arr[i]+"");
}
}
int[] newarr = new int[sb.toString().length()];
for(int k=0;k<sb.toString().length();k++){
newarr[k] = sb.toString().charAt(k);
}
System.out.println(newarr+"--"+sb.toString());
}
public void removeRup2(){
int[] arr = new int[]{1,2,2,2,3,3,3,4,4,4,5,5,5};
Set<Integer> set = new HashSet<Integer>();
for(int k=0;k<arr.length;k++){
set.add(arr[k]);
}
StringBuffer sb = new StringBuffer();
Integer[] aras = set.toArray(new Integer[0]);
for(int i=0;i<aras.length;i++){
sb.append(aras[i]);
}
System.out.println(sb.toString());
}