你中有我 串接字元成為子序列_雙指針應用_Leetcode #2486

更新於 2024/06/03閱讀時間約 5 分鐘

題目敘述 Append Characters to String to Make Subsequence

給定兩個字串s和字串t。

請計算最少的字元串接數量是多少,串接在s的尾端,使得t是s的子序列。


測試範例

Example 1:

Input: s = "coaching", t = "coding"
Output: 4
Explanation: Append the characters "ding" to the end of s so that s = "coachingding".
Now, t is a subsequence of s ("coachingding").
It can be shown that appending any 3 characters to the end of s will never make t a subsequence.

最少補上'ding'在s的尾端,使得t是s的子序列​

Example 2:

Input: s = "abcde", t = "a"
Output: 0
Explanation: t is already a subsequence of s ("abcde").

不需要額外串接,t已經是s的子序列。​

Example 3:

Input: s = "z", t = "abcde"
Output: 5
Explanation: Append the characters "abcde" to the end of s so that s = "zabcde".
Now, t is a subsequence of s ("zabcde").
It can be shown that appending any 4 characters to the end of s will never make t a subsequence.

最少補上'abcde'在s的尾端,使得t是s的子序列​

約束條件

Constraints:

  • 1 <= s.length, t.length <= 10^5

字串s和字串t的長度都介於1~十萬之間。

  • s and t consist only of lowercase English letters.

字串s和字串t都只會有英文小寫字母。


觀察

子序列不要求連續,只要字元出現的相對次序相同即可

盡可能的匹配,計算s裡面已經有幾個字元可以滿足t的需求


剩下不足的字元數量

= 要串接的字元數量 = t的總長度 - 成功匹配的字元數量


演算法 雙指針

從左到右掃描每個字元,假如s和t有相符的字元,成功匹配的計數器就加一

最後掃描結束時,t的總長度 - 成功匹配的字元數量 就是 ​要串接的字元數量,使得t是s的子序列。


程式碼 雙指針

class Solution:
def appendCharacters(self, s: str, t: str) -> int:

i, j = 0, 0

# Scan each character from left to right
while i < len(s) and j < len(t): # find characters from 't' in 's':

# Match one character, match count of j adds 1
if s[i] == t[j]:
j +=1

# update checking index of s
i += 1

# counting of missing = total length - count of matched
return len(t) - j

複雜度分析

時間複雜度: O( min( len(s), len(t) ) )

從左到右掃描每個字元,如果先抵達s或t其中一段的尾端,則掃描結束。


空間複雜度: O(1)

所用到的都是固定尺寸的臨時變數,為常數級別O(1)。


Reference

[1] Append Characters to String to Make Subsequence - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
通過 取捨與否的最佳策略 來獲得 最高的分數。文章中運用了類似House Robbery的DP模型來解決這個問題。通過演算法化簡的技巧,將這個問題化簡到 相鄰物不可同時選擇的DP模型。同時,強烈建議同時複習House Robbery,熟悉DP演算法框架和掌握演算法化簡的技巧。
了解如何使用in-place原位操作及O(1)常數空間的演算法來反轉給定的字串陣列。藉由雙指針演算法,每回合對調左右兩個指針對應到的字元,並且逐漸往中心靠攏,由外而內進行反轉。詳細的演算法與複雜度分析也在文章中呈現。
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
本文章討論如何使用動態規劃和回頭查看技巧來計算最長遞增子序列的長度,並提供了相關的測試案例和範例。本文還包括了詳細的演算法和程式碼示例,以及時間和空間複雜度的分析。
題目敘述 Single Number II 給定一個輸入陣列,已知有一個烙單的數字,其他剩餘的數字都恰巧出現三次。 請找出這個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [2,2,
題目敘述 Single Number III 給定一個輸入陣列,已知有兩個烙單的數字,其他剩餘的數字都恰巧出現兩次。 請找出這兩個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [1,
通過 取捨與否的最佳策略 來獲得 最高的分數。文章中運用了類似House Robbery的DP模型來解決這個問題。通過演算法化簡的技巧,將這個問題化簡到 相鄰物不可同時選擇的DP模型。同時,強烈建議同時複習House Robbery,熟悉DP演算法框架和掌握演算法化簡的技巧。
了解如何使用in-place原位操作及O(1)常數空間的演算法來反轉給定的字串陣列。藉由雙指針演算法,每回合對調左右兩個指針對應到的字元,並且逐漸往中心靠攏,由外而內進行反轉。詳細的演算法與複雜度分析也在文章中呈現。
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
本文章討論如何使用動態規劃和回頭查看技巧來計算最長遞增子序列的長度,並提供了相關的測試案例和範例。本文還包括了詳細的演算法和程式碼示例,以及時間和空間複雜度的分析。
題目敘述 Single Number II 給定一個輸入陣列,已知有一個烙單的數字,其他剩餘的數字都恰巧出現三次。 請找出這個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [2,2,
題目敘述 Single Number III 給定一個輸入陣列,已知有兩個烙單的數字,其他剩餘的數字都恰巧出現兩次。 請找出這兩個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [1,
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
隨著企業數位轉型的步伐加快,提升工作效率和降低成本成為了重要目標。 在這個過程中,RPA與API結合使用,為企業帶來了更高效、更智能的自動化解決方案。 RPAI 數位優化器將和大家一起探討RPA與API串接的應用,並分析其在不同領域中的實際效益。
Thumbnail
本文介紹了無菌過濾中的餘贅無菌過濾和串聯過濾技術,包括過濾器應在使用前、滅菌後和使用後進行測試的相關要求,並強調了對於過濾器名詞的正確使用。
Thumbnail
因此本篇文章,我們將和大家介紹,可以怎麼串聯 RPA 和 AI 工具 ChatGPT!接下來我們將以微軟的 RPA 工具 PowerAutomate 當作示範,分享其如何透過「自訂連接器」功能,讓你在流程中呼叫 ChatGPT,並將其回應拋回流程中進行使用。
Thumbnail
2022 年 Google Analytics 4 網站分析工具,搭配 BigQuery 免費儲存資料,一手掌握第一方數據;OTT 與 CTV 廣告衡量技術,強化洞察彙整、成效歸因的細緻度;社群則有 Meta 大改演算機制,主推 Reels 短影音貼近年輕世代喜好,持續尋找新潮流突破口。
Thumbnail
因應數位時代興起,許多傳統交易方式已被淘汰,取而代之的是線上、雲端的新興交易模式,此時API 就扮演相當重要的角色。於2016年成立的英國金融科技公司FORM3 開發以網際網路為基礎的API 軟體,藉由單一API 提供託管支付服務。今天就讓馬克帶你一起了解吧!
Thumbnail
對中文母語人士來說,最容易學習的外語是什麼?或許每個人的答案不盡相同,但是看完本文之後,我想應該能幫助你做出選擇。XD
Thumbnail
台灣目前在國際跨國影音串流平台方面,除了以台灣做為基地出發的 CATCHPLAY+、GagaOOLala 及本土化經營的 LINE TV 外,內容有對應繁體中文字幕隨選影音的共13家
Thumbnail
就台灣本土與全球跨國串流影音平台來說,迄今持續經營繁體中文影音內容的平台已有超過40個!而在一片紅海中,各平台無不絞盡心思努力做出差異化與獨特內容吸引消費者目光。
Thumbnail
安索帕(Isobar)迎接體驗經濟時代來臨,以創新思維全方位佈局。自詡為以創意驅動創造體驗的新型態的品牌代理商,在協助客戶品牌轉型與體驗轉型方面,設立「品牌顧客體驗與商務解決方案」,從客戶生意的最前端就開始提供具前瞻性的整合服務,洞察體驗經濟趨勢,提供幫助品牌創造成長動能的自有平台策略。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
隨著企業數位轉型的步伐加快,提升工作效率和降低成本成為了重要目標。 在這個過程中,RPA與API結合使用,為企業帶來了更高效、更智能的自動化解決方案。 RPAI 數位優化器將和大家一起探討RPA與API串接的應用,並分析其在不同領域中的實際效益。
Thumbnail
本文介紹了無菌過濾中的餘贅無菌過濾和串聯過濾技術,包括過濾器應在使用前、滅菌後和使用後進行測試的相關要求,並強調了對於過濾器名詞的正確使用。
Thumbnail
因此本篇文章,我們將和大家介紹,可以怎麼串聯 RPA 和 AI 工具 ChatGPT!接下來我們將以微軟的 RPA 工具 PowerAutomate 當作示範,分享其如何透過「自訂連接器」功能,讓你在流程中呼叫 ChatGPT,並將其回應拋回流程中進行使用。
Thumbnail
2022 年 Google Analytics 4 網站分析工具,搭配 BigQuery 免費儲存資料,一手掌握第一方數據;OTT 與 CTV 廣告衡量技術,強化洞察彙整、成效歸因的細緻度;社群則有 Meta 大改演算機制,主推 Reels 短影音貼近年輕世代喜好,持續尋找新潮流突破口。
Thumbnail
因應數位時代興起,許多傳統交易方式已被淘汰,取而代之的是線上、雲端的新興交易模式,此時API 就扮演相當重要的角色。於2016年成立的英國金融科技公司FORM3 開發以網際網路為基礎的API 軟體,藉由單一API 提供託管支付服務。今天就讓馬克帶你一起了解吧!
Thumbnail
對中文母語人士來說,最容易學習的外語是什麼?或許每個人的答案不盡相同,但是看完本文之後,我想應該能幫助你做出選擇。XD
Thumbnail
台灣目前在國際跨國影音串流平台方面,除了以台灣做為基地出發的 CATCHPLAY+、GagaOOLala 及本土化經營的 LINE TV 外,內容有對應繁體中文字幕隨選影音的共13家
Thumbnail
就台灣本土與全球跨國串流影音平台來說,迄今持續經營繁體中文影音內容的平台已有超過40個!而在一片紅海中,各平台無不絞盡心思努力做出差異化與獨特內容吸引消費者目光。
Thumbnail
安索帕(Isobar)迎接體驗經濟時代來臨,以創新思維全方位佈局。自詡為以創意驅動創造體驗的新型態的品牌代理商,在協助客戶品牌轉型與體驗轉型方面,設立「品牌顧客體驗與商務解決方案」,從客戶生意的最前端就開始提供具前瞻性的整合服務,洞察體驗經濟趨勢,提供幫助品牌創造成長動能的自有平台策略。