(该模块仅为记录本人的leetcode的练习记录)
解题思路:先找到匹配的字符位置,若是不存在则直接返回源字符串,反正反转前部分。
代码:
package LeetCode.Code2022.February; public class Solution2000 { public String reversePrefix(String word, char ch) { int index = -1; index = word.indexOf(ch); if (index == -1) { return word; } return new StringBuilder(word.substring(0, index + 1)).reverse() + word.substring(index + 1); } }
解题思路:先得到所有小于k的斐波那契额数集,存放在list中,然后每次从list中获取最大的数与K进行比较,若该数小于等于K则将该数视为解集之一,然后将K减去该数,反之获取第二大的数进行比较,重复上述步骤。
代码:
package LeetCode.Code2022.February; import java.util.ArrayList; import java.util.List; public class Solution1414 { public int findMinFibonacciNumbers(int k) { List<Integer> list = fibonacci(k); int ans = 0; int index = list.size() - 1; while (k > 0) { if (list.get(index) <= k) { k -= list.get(index); ans++; } else { index = index > 0 ? index - 1 : 0; } } return ans; } List<Integer> fibonacci(int k) { List<Integer> hashSet = new ArrayList<>(); int f1 = 1; int f2 = 1; int fn = 0; hashSet.add(1); while (fn <= k) { fn = f1 + f2; f1 = f2; f2 = fn; hashSet.add(fn); } return hashSet; } }
解题思路:先遍历一遍记录可形成的最大正方形边长,然后在遍历一遍可以形成最大正方形边长的数目
代码:
package LeetCode.Code2022.February; public class Solution1725 { public int countGoodRectangles(int[][] rectangles) { int maxLen = 0; for (int i = 0; i < rectangles.length; i++) { int len = Math.min(rectangles[i][0], rectangles[i][1]); if (maxLen < len) { maxLen = len; } } int ans = 0; for (int i = 0; i < rectangles.length; i++) { int len = Math.min(rectangles[i][0], rectangles[i][1]); if (len == maxLen) { ans++; } } return ans; } }