考核内容:
在指定的题库中自主选择不少于 15 道算法题并完成解题,其中题目难度分配如下:
- 简单题不少于 10 道
- 中等题不少于 4 道
- 困难题不少于 1 道
解答代码
16.DNA 序列还原 (简单)
代码实现:
public class Main {public static int solution(String dna1, String dna2) {int m = dna1.length();int n = dna2.length();// 创建二维数组来存储中间结果int[][] dp = new int[m + 1][n + 1];// 初始化边界条件for (int i = 0; i <= m; i++) {dp[i][0] = i;}for (int j = 0; j <= n; j++) {dp[0][j] = j;}// 核心计算逻辑for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (dna1.charAt(i - 1) == dna2.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = Math.min(dp[i - 1][j] + 1, // 删除操作Math.min(dp[i][j - 1] + 1, // 插入操作dp[i - 1][j - 1] + 1)); // 替换操作}}}return dp[m][n];}public static void main(String[] args) {// You can add more test cases hereSystem.out.println(solution("AGCTTAGC", "AGCTAGCT") == 2);System.out.println(solution("AGCCGAGC", "GCTAGCT") == 4);}
}
运行结果: