面试题-JAVA算法题

1.编写一个程序,输入n,求n!(用递归的方式实现)。

public static long fac(int n){
        if(n<=0) return 0;
        else if(n==1)    return 1;
        else return n*fac(n-1);
    }
    public static void main(String [] args) {
        System.out.println(fac(6));
    }

2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

 1 public static void main(String [] args) {
 2        int i, j, k;
 3        int m=0;
 4        for(i=1;i<=4;i++)
 5           for(j=1;j<=4;j++)
 6             for(k=1;k<=4;k++){
 7                if(i!=j&&k!=j&&i!=k){
 8                  System.out.println(""+i+j+k);
 9                  m++;
10                }
11             }
12         System.out.println("能组成:"+m+"个");
13 }

3.编写一个程序,将text1.txt文件中的单词与text2.txt文件中的单词交替合并到text3.txt文件中。text1.txt文件中的单词用回车符分隔,text2.txt文件中用回车或空格进行分隔。

 1 import java.io.File;  
 2 import java.io.FileReader;  
 3 import java.io.FileWriter;  
 4   
 5 public class text{  
 6     public static void main(String[] args) throws Exception{  
 7         String[] a = getArrayByFile("text1.txt",new char[]{'\n'});  
 8         String[] b = getArrayByFile("text2.txt",new char[]{'\n',' '});        
 9         FileWriter c = new FileWriter("text3.txt"); 
10         int aIndex=0;
11         int bIndex=0;         
12 
13         while(aIndex<a.length){  
14             c.write(a[aIndex++] + "\n");    
15             if(bIndex<b.length)  
16                 c.write(b[bIndex++] + "\n"); 
17         }  
18           
19         while(bIndex<b.length){  
20             c.write(b[bIndex++] +  "\n"); 
21         }     
22         c.close();  
23     }  
24 
25      public static String[] getArrayByFile(String filename,char[] seperators) throws Exception{  
26         File f = new File(filename);  
27         FileReader reader = new FileReader(f);  
28         char[] buf = new char[(int)f.length()];  
29         int len = reader.read(buf);  
30         String results = new String(buf,0,len);  
31         String regex = null;  
32         if(seperators.length >1 ){  
33             regex = "" + seperators[0] + "|" + seperators[1];  
34         }else{  
35             regex = "" + seperators[0];  
36         }  
37         return  results.split(regex);  
38     }  
39       
40 }

4.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如 String str="hello world hello hi";单词数量为3,分别是:hello world hi。

 1 public static void main(String [] args) {
 2             int count = 0;
 3             String str="hello world hello hi";
 4             String newStr="";
 5             HashMap<String,String> m=new HashMap<String,String>();
 6             String [] a=str.split(" ");
 7             for (int i=0;i<a.length;i++){
 8                 if(!m.containsKey(a[i])){
 9                     m.put(a[i],"1");
10                     count++;
11                     newStr=newStr+" "+a[i];
12                 }
13             }
14             System.out.println("这段短文单词的个数是:"+count+","+newStr);
15     }

 

posted @ 2018-09-07 16:04  hao踏雪无痕  阅读(240)  评论(0编辑  收藏  举报