LeetCode583——Delete Operation for Two Strings解題報(bào)告

Leetcode583 Delete Operation for Two Strings解題報(bào)告

題意

Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string.

Example 1:
Input: "sea", "eat"
Output: 2
Explanation: You need one step to make "sea" to "ea" and another step to make "eat" to "ea".
Note:
The length of given words won't exceed 500.
Characters in given words can only be lower-case letters.

簡單來說就是給你兩個(gè)字符串,做幾次操作可以使得兩個(gè)串相等(每次操作只能刪除一個(gè)字符)谁不。

思路

遞歸的解法

那么我們應(yīng)該可以想到這其實(shí)就是求兩個(gè)字符串的最長公共子串坐梯。因?yàn)橹灰覀冎懒诉@兩個(gè)字符串的最長公共子串,答案就是s1.length + s2.length - 2 * longest common string刹帕。
求最長公共子串的話可以進(jìn)行遞歸求解吵血。

function getLongestCommonString (s1, s2, m, n) {
    if (s[m] === s[n]) {
        return arguments.callee(s1, s2, m - 1, n - 1)
    } else {
        return Math.max(arguments.callee(s1, s2, m, n - 1), arguments.callee(s1, s2, m - 1, n))
    }
}

其實(shí)看代碼就很明白,如果兩個(gè)串最后一個(gè)字符對上了,那么它的結(jié)果就是s1[0:m-1]和s2[0:n-1]的最長公共子串?dāng)?shù)量加上1护锤。如果對不上胸私,那就是等于s1[0:m-1]和s2[0:n]的最長公共子串?dāng)?shù)量和s1[0:m]和s2[0:n-1]的最長公共子串?dāng)?shù)量兩者的最大值。進(jìn)行一次遞歸就可以得到結(jié)論侦另,最后用計(jì)算公式得到操作次數(shù)。

dp的解法

這道題也可以用dp來做尉共,算法上和遞歸解答思路是相近的褒傅。我們用二維數(shù)組來存狀態(tài)。dp[i][j]表示s1[0:i]和s2[0:j]的最長公共子串袄友,那么我們只需要在字符對上時(shí)殿托,dp[i][j] = dp[i - 1][j - 1] + 1,對不上時(shí)剧蚣,dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])就行了支竹,注意一下邊界值即可。

/**
 * @param {string} word1
 * @param {string} word2
 * @return {number}
 */
var minDistance = function(word1, word2) {
    if (word1.length === 0 || word2.length === 0) {
        return word1.length > word2.length ? word1.length:word2.length
    }
    var store = new Array()
    for (var i = 0; i < 501; i++) {
        store[i] = new Array()
    }
    for (var i = 0; i < word1.length; i++) {
        for (var k = 0; k < word2.length; k++) {
            if (word1[i] === word2[k]) {
                if (i === 0) {
                    store[0][k] = 1
                } else if (k === 0) {
                    store[i][0] = 1
                } else {
                    store[i][k] = store[i - 1][k - 1] + 1
                }
            } else {
                if (i === 0 && k === 0) {
                    store[0][0] = 0                    
                } else if (i === 0) {
                    store[0][k] = store[0][k - 1]
                } else if (k === 0) {
                    store[i][0] = store[i - 1][0]
                } else {
                    store[i][k] = Math.max(store[i][k - 1], store[i - 1][k])
                }
            }
        }
    }
    return word1.length + word2.length - 2 * store[word1.length - 1][word2.length - 1]
};

代碼效率不咋的券敌。唾戚。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末待诅,一起剝皮案震驚了整個(gè)濱河市叹坦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卑雁,老刑警劉巖募书,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绪囱,死亡現(xiàn)場離奇詭異,居然都是意外死亡莹捡,警方通過查閱死者的電腦和手機(jī)鬼吵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篮赢,“玉大人齿椅,你說我怎么就攤上這事∑羝” “怎么了涣脚?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寥茫。 經(jīng)常有香客問我遣蚀,道長,這世上最難降的妖魔是什么纱耻? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任芭梯,我火速辦了婚禮,結(jié)果婚禮上弄喘,老公的妹妹穿的比我還像新娘玖喘。我一直安慰自己,他們只是感情好限次,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布芒涡。 她就那樣靜靜地躺著,像睡著了一般卖漫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赠群,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天羊始,我揣著相機(jī)與錄音,去河邊找鬼查描。 笑死突委,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冬三。 我是一名探鬼主播匀油,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼勾笆!你這毒婦竟也來了敌蚜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤窝爪,失蹤者是張志新(化名)和其女友劉穎弛车,沒想到半個(gè)月后齐媒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纷跛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年喻括,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贫奠。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唬血,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唤崭,到底是詐尸還是另有隱情刁品,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布浩姥,位于F島的核電站挑随,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勒叠。R本人自食惡果不足惜兜挨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望眯分。 院中可真熱鬧拌汇,春花似錦、人聲如沸弊决。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飘诗。三九已至与倡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昆稿,已是汗流浹背纺座。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溉潭,地道東北人净响。 一個(gè)月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像喳瓣,于是被迫代替她去往敵國和親馋贤。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容