LeetCode 🟡 2486. Append Characters to String to Make Subsequence
🔗 🟡 2486. Append Characters to String to Make Subsequence 1363
tags: Weekly Contest 321
貪心(Greedy)
雙指標(Two Pointers)
字串(String)
題意
給定兩個由小寫字母組成的字串 和 。
透過向 末尾增加字元的方式使 變成 的一個 子序列(subsequence),返回需要追加的最少字符數。
子序列(subsequence) 是一個可以由其他字串刪除部分(或不刪除)字元,但不改變剩下字元順序,所得到的字串。
思路:貪心(Greedy) + 雙指標(Two Pointers)
這題本質上是找到最大的 ,使得 是 的子序列。
首先基於 貪心(Greedy) 思路思考,我們可以發現,對於 的第 個字元,若其出現在 中,則出現的位置 越早越好 ,因為這樣在後續的匹配過程中有更多的空間,如此 的第 個字元有更大的可能在 中。
因此我們可以使用雙指針的方式來解決這個問題,令 和 分別指向 和 的開頭,當 時,則 往後移動,否則 往後移動。到 或 超出範圍,此時 為 的子序列,需要補上的字元數即為 。
複雜度分析
1 | class Solution: |
1 | class Solution { |
寫在最後
Cover photo is generated by @ゴリラの素材屋さん, thanks for their work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus