一著名软件公司的java笔试算法题
算法程序题:
该公司笔试题就1个,要求在10分钟内作完。
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
package mu.orderstr;
import java.util.ArrayList;
import java.util.List; public class GetAll { 本文出自 51CTO.COM技术博客List list=new ArrayList(); public GetAll(){ list.add("22"); } public void AllOrder(String str){ List listlin=new ArrayList(); for(int i=0;i<list.size();i++){ String nstr=(String )list.get(i); nstr=str+nstr; String cmpstr=nstr; listlin.add(nstr); nstr=ChangeStr(nstr); while(!cmpstr.equals(nstr)){ listlin.add(nstr); nstr=ChangeStr(nstr); } } list.clear(); list.addAll(listlin); } public void OutAll(){ //过虑 for(int j=0;j<list.size();j++){ String outstr=(String)list.get(j); if((outstr.indexOf("3")+1==outstr.indexOf("5")) || (outstr.indexOf("3")-1==outstr.indexOf("5"))||(outstr.indexOf("4")==2)) continue; System.out.println("-----------"+outstr); } } public String ChangeStr(String str){ char arr[]=str.toCharArray(); char first=arr[0]; str=str.substring(1,str.length())+first; return str; } public static void main(String args[]){ GetAll getall=new GetAll(); getall.AllOrder("1"); getall.AllOrder("3"); getall.AllOrder("4"); getall.AllOrder("5"); getall.OutAll(); } } |


yaocan84
博客统计信息
热门文章
最新评论
友情链接