- 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); -
}