1.求N的阶乘
a) 迭代算法
private static int jiecheng(int n) {
if (n <= 0) return 0;
int f1 = 1;
int product = f1;
// 5*4*3*2*1
for (int i = 1; i < n + 1; i++) {
product = product * f1;
f1 = f1 + 1;
}
return product;
}
b)递归算法
public long diGui(int n){
if(n==1){
return 1;
}else{
return n*diGui(n-1);
}
}
2、写一个方法,要求:输入一个字符串ABCDEFG,要求倒序输出GFEDCBA:
public String formatString(String s){
//用for倒序循环,取char类型的方法实现
for(int i=s.length()-1;i>=0;i--){
System.out.print(s.charAt(i));
}
return s;
}
3.不使用临时变量交换两个数
static void funSwapTwo(int a, int b) {
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println(a + " " + b);
}
4.判断一个数是否为素数
static boolean funIsPrime(int m) {
boolean flag = true;
if (m == 1) {
flag = false;
} else {
for (int i = 2; i <= Math.sqrt(m); i++) {
if (m % i == 0) {
flag = false;
break;
}
}
}
return flag;
}
5.问题: 将一个整数转换成字符串,要求不能使用系统调用。
ps:如果是把字符串转换成数字的话要用到 char a='6',a-'0';
6.问题:反转字符串
开始时想到的反转算法非常简单,就是利用折半法,把前后对应位置的字符互换。但该算法没有考虑速度和空间的优化。
7.问题:字符串拷贝
8.问题:字符子串删除
9.问题:在一个字符串str中查找一个子串sub,不使用任何的系统调用。
10.问题:编写一个高效的函数,找到字符串中首个非重复字符。例如:total 中的 首个非重复字符是 o,teeter是 r。讨论算法的效率。
解答:此问题是字符串操作的经典问题,考察的主要是查找的效率和实现的思路。可以使用一般的思路,但最坏的时间复杂度是O(n^2),显然不是好的解法。
问题:查找两个字符串的公共子串。
ps 不是连续子串