淘先锋技术网

首页 1 2 3 4 5 6 7

Java火和费罗切是两个重要的算法问题,下面我们来简单介绍一下。

Java火问题:给定一个字符串数组,只有两个字符串不同,找出那两个字符串并返回它们在数组中的索引。

public int[] findDifference(String[] strs) {
int[] res = new int[2];
int n = strs.length;
HashSetset = new HashSet<>();
for (int i = 0; i< n; i++) {
if (!set.add(strs[i])) {
res[0] = i;
}
}
for (int i = 0; i< n; i++) {
for (int j = 0; j< strs[i].length(); j++) {
char c = strs[i].charAt(j);
StringBuilder sb = new StringBuilder(strs[i]);
sb.setCharAt(j, c == 'a' ? 'b' : 'a');
String s = sb.toString();
if (set.contains(s)) {
res[1] = i;
return res;
}
}
}
return res;
}

费罗切问题:给定一个正整数n,返回第n个斐波那契数列的值。

public int fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
int f0 = 0, f1 = 1;
for (int i = 2; i<= n; i++) {
int tmp = f0 + f1;
f0 = f1;
f1 = tmp;
}
return f1;
}

Java火和费罗切问题都是算法面试中经典的问题,需要我们掌握其思想并熟练掌握代码实现。