583. 两个字符串的删除操作用时6ms的另类解法
生活随笔
收集整理的這篇文章主要介紹了
583. 两个字符串的删除操作用时6ms的另类解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開門見山
看見這道題,我的第一反應不是去找出符合這道題的動態規劃遞推公式,我反而認為可以借用一下1143. 最長公共子序列的題解
class Solution {public int longestCommonSubsequence(String text1, String text2) {int[][] dp = new int[text1.length() + 1][text2.length() + 1];for (int i = 1 ; i <= text1.length() ; i++) {char char1 = text1.charAt(i - 1);for(int j = 1; j <= text2.length(); j++){char char2 = text2.charAt(j - 1);if(char1 == char2){dp[i][j] = dp[i - 1][j - 1] + 1;}else{dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[text1.length()][text2.length()];} }將上面最后一行代碼改成如下:
int len = dp[word1.length()][word2.length()];return word1.length() + word2.length() - 2 * len;求出最長公共序列之后就可以用倆字符串長度相加再減去2倍的len
用了6ms
原題解用了13ms
順便附上原題解代碼
太難理解了2333,投機取巧算了
總結
以上是生活随笔為你收集整理的583. 两个字符串的删除操作用时6ms的另类解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星电脑分屏怎么设置在哪里设置(三星怎么
- 下一篇: AQS的细节--自用,非正常教程