您的位置:首页 > 职场人生

Java 面试代码题型

2013-06-07 21:40 260 查看
1. 实现斐波那契(Fibonacci)f(N)=F(N-1)+F(N-2),其中f(1)=f(2)=1

public static int method(int n){

if(n<=2){

return 1;

}else

return method(n-1)+method(n-2);

}

2. 查找字符串中出现的第一个不重复的字母

//方法一

public static Character firstNo(String str){

Map <Character,Integer> map = new HashMap<Character,Integer>();

for(int i=0; i<str.length();i++){

if(map.containsKey(str.charAt(i))){

map.put(str.charAt(i), 2);

}else{

map.put(str.charAt(i), 1);

}

}

for(int i=0; i<str.length();i++){

if(map.get(str.charAt(i))==1 ){

return str.charAt(i);

}

}

return null;

}

//方法二

public static String findStr(String testStr){

String rstr= "no";

for(int i=0;i<testStr.length();i++){

String charindex = String.valueOf(testStr.charAt(i));

//如果这个字符第一次出现的位置和最后出现的位置相等,就说明字符串中它只出现了一次

if(testStr.indexOf(charindex) == testStr.lastIndexOf(charindex)){

rstr = charindex;

break;

}

}

return rstr;

}

3. 实现n的阶乘相加(如:1!+2!+3!+……+10!)

//方法一:非递归实现

public static long n1(int n){

long temp=1;

long sum=0;

for(int i=1; i<=n; i++){

temp*=i;

sum+=temp;

}

return sum;

}

//方法二:递归实现

/**

* 阶乘和

*

* @param 目标数字

* @return 目标数字0!+1!+2!+...+n!阶乘和

*/

public static long factorialAdd(int number) {

long sum = 0;

//注意从1开始相加

for (long i = 1; i <= number; i++) {

sum += facotrial(i);

}

return sum;

}

/**

* 求数字n的阶乘

*

* @param n

* @return

*/

public static long facotrial(long n) {

if (n == 0 || n == 1) {

return 1;

}

return n * facotrial(n - 1);

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: