代码随想录算法训练营第五十六天 | 两个字符串的删除操作、编辑距离
● 今日学习的文章链接和视频链接
● 看到题目的第一想法
编辑距离大boss
● 看完代码随想录之后的想法
很清楚
● 实现过程中遇到哪些困难
最后这个边界距离就很清楚了,什么插入删除其实就是对字符串进行操作即改动,那么只要看三种情况哪个改动最少就行
● 解题代码
-
点击查看代码
class Solution { public int minDistance(String word1, String word2) { int[][] dp = new int[word1.length() + 1][word2.length() + 1]; for (int i = 1; i <= word1.length(); i++) { for (int j = 1; j <= word2.length(); j++) { if(word1.charAt(i-1) == word2.charAt(j-1)){ dp[i][j] = dp[i-1][j-1] + 1; }else{ dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]); } } } return word1.length() + word2.length() - dp[word1.length()][word2.length()]*2; } } -
点击查看代码
class Solution { public int minDistance(String word1, String word2) { int len1 = word1.length(); int len2 = word2.length(); int[][] dp = new int[len1+1][len2+1]; for (int i = 1; i <= len1; i++) { dp[i][0] = i; } for (int j = 1; j <= len2; j++) { dp[0][j] = j; } for (int i = 1; i <= len1; i++) { for (int j = 1; j <= len2; j++) { if(word1.charAt(i-1) == word2.charAt(j-1)){ dp[i][j] = dp[i-1][j-1]; }else{ dp[i][j] = Math.min(Math.min(dp[i-1][j-1],dp[i][j-1]),dp[i-1][j]) + 1; } } } return dp[len1][len2]; } }
● 今日收获,学习时长
今日收获:编辑距离
学习时长:1h
浙公网安备 33010602011771号