Java 面试代码题型

  1. 1. 实现斐波那契(Fibonacci)f(N)=F(N-1)+F(N-2),其中f(1)=f(2)=1
  2. public static int method(int n){
  3.     if(n<=2){
  4.       return 1;
  5.     }else
  6.       return method(n-1)+method(n-2);
  7.   }
  1. 2. 查找字符串中出现的第一个不重复的字母
  2.   //方法一
  3.    public static Character firstNo(String str){  
  4.          
  5.           Map <Character,Integer> map = new HashMap<Character,Integer>();  
  6.             
  7.           for(int i=0; i<str.length();i++){  
  8.                 
  9.               if(map.containsKey(str.charAt(i))){             
  10.                    map.put(str.charAt(i), 2);            
  11.               }else{  
  12.                    map.put(str.charAt(i), 1);  
  13.               }     
  14.           }  
  15.           for(int i=0; i<str.length();i++){  
  16.                 
  17.               if(map.get(str.charAt(i))==1 ){  
  18.                     
  19.                   return str.charAt(i);  
  20.               }  
  21.           }  
  22.             
  23.           return null;  
  24.       }  
  25.  //方法二
  26.   public static String findStr(String testStr){
  27.         String rstr= "no";
  28.         for(int i=0;i<testStr.length();i++){
  29.             String charindex = String.valueOf(testStr.charAt(i));
  30.             //如果这个字符第一次出现的位置和最后出现的位置相等,就说明字符串中它只出现了一次
  31.             if(testStr.indexOf(charindex) == testStr.lastIndexOf(charindex)){
  32.                 rstr = charindex;
  33.                 break;
  34.             }
  35.             
  36.         }
  37.         return rstr;
  38.   }
  1. 3. 实现n的阶乘相加(如:1!+2!+3!+……+10!)
  2. //方法一:非递归实现
  3. public static long n1(int n){
  4.      long temp=1;
  5.      long sum=0;
  6.      for(int i=1; i<=n; i++){
  7.        temp*=i;
  8.        sum+=temp;
  9.      }
  10.      return sum;
  11.    }
  12. //方法二:递归实现
  13. /**
  14.        * 阶乘和
  15.        * 
  16.        * @param 目标数字
  17.        * @return 目标数字0!+1!+2!+...+n!阶乘和
  18.        */
  19.       public static long factorialAdd(int number) {
  20.           long sum = 0;
  21.          //注意从1开始相加
  22.           for (long i = 1; i <= number; i++) {
  23.               sum += facotrial(i);
  24.           }
  25.           return sum;
  26.       }
  27.       /**
  28.        * 求数字n的阶乘
  29.        * 
  30.        * @param n
  31.        * @return
  32.        */
  33.       public static long facotrial(long n) {
  34.           if (n == 0 || n == 1) {
  35.               return 1;
  36.           }
  37.           return n * facotrial(n - 1);
  38.       }


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值