当前位置: 代码迷 >> 综合 >> 面试算法 -03
  详细解决方案

面试算法 -03

热度:25   发布时间:2024-01-19 12:03:04.0
/***  题目如下:用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());}

  相关解决方案