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火和费罗切问题都是算法面试中经典的问题,需要我们掌握其思想并熟练掌握代码实现。