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

閱讀時間約 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

52會員
340內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
RPA串接API應用:提升效率新利器隨著企業數位轉型的步伐加快,提升工作效率和降低成本成為了重要目標。 在這個過程中,RPA與API結合使用,為企業帶來了更高效、更智能的自動化解決方案。 RPAI 數位優化器將和大家一起探討RPA與API串接的應用,並分析其在不同領域中的實際效益。
Thumbnail
avatar
RPAI 數位優化器
2024-06-01
過濾器的串接類型本文介紹了無菌過濾中的餘贅無菌過濾和串聯過濾技術,包括過濾器應在使用前、滅菌後和使用後進行測試的相關要求,並強調了對於過濾器名詞的正確使用。
Thumbnail
avatar
LoMei
2024-04-24
JavaScript 演義 #17: 曹操短歌行,字串流傳JavaScript 演義 #17: 曹操短歌行,字串流傳
Thumbnail
avatar
KH Huang
2023-09-23
RPA 功能|Power Automate 自訂 ChatGPT 連接器,成為流程串接 AI 第一步!因此本篇文章,我們將和大家介紹,可以怎麼串聯 RPA 和 AI 工具 ChatGPT!接下來我們將以微軟的 RPA 工具 PowerAutomate 當作示範,分享其如何透過「自訂連接器」功能,讓你在流程中呼叫 ChatGPT,並將其回應拋回流程中進行使用。
Thumbnail
avatar
RPAI 數位優化器
2023-03-18
2022 數位趨勢總回顧|第一方數據、自動化廣告為隱私對策;演算更新、串流影音熱門不退潮2022 年 Google Analytics 4 網站分析工具,搭配 BigQuery 免費儲存資料,一手掌握第一方數據;OTT 與 CTV 廣告衡量技術,強化洞察彙整、成效歸因的細緻度;社群則有 Meta 大改演算機制,主推 Reels 短影音貼近年輕世代喜好,持續尋找新潮流突破口。
Thumbnail
avatar
TenMax ADTech Lab
2022-12-20
FORM3:串接金融支付與服務的技術提供商?因應數位時代興起,許多傳統交易方式已被淘汰,取而代之的是線上、雲端的新興交易模式,此時API 就扮演相當重要的角色。於2016年成立的英國金融科技公司FORM3 開發以網際網路為基礎的API 軟體,藉由單一API 提供託管支付服務。今天就讓馬克帶你一起了解吧!
Thumbnail
avatar
馬克解讀金融科技
2022-11-02
你中有我,我中有你對中文母語人士來說,最容易學習的外語是什麼?或許每個人的答案不盡相同,但是看完本文之後,我想應該能幫助你做出選擇。XD
Thumbnail
avatar
元小科
2022-04-20
台灣串流影音OTT平台 疫情時代 自製內容發展 —跨國平台篇台灣目前在國際跨國影音串流平台方面,除了以台灣做為基地出發的 CATCHPLAY+、GagaOOLala 及本土化經營的 LINE TV 外,內容有對應繁體中文字幕隨選影音的共13家
Thumbnail
avatar
影行者
2021-02-07
台灣串流影音OTT平台 疫情時代 自製內容發展 —本土篇就台灣本土與全球跨國串流影音平台來說,迄今持續經營繁體中文影音內容的平台已有超過40個!而在一片紅海中,各平台無不絞盡心思努力做出差異化與獨特內容吸引消費者目光。
Thumbnail
avatar
影行者
2021-02-02
串接最佳顧客體驗 助品牌達成商務賦能 文/編輯部 攝/陳羽晴   安索帕(Isobar)迎接體驗經濟(The Experience Economy)時代來臨,以創新思維全方位佈局。自詡為以創意驅動創造體驗的新型態的品牌代理商,在協助客戶品牌轉型與體驗轉型方面,設立「品牌顧客體驗與商務解決方案」(Customer Experien
Thumbnail
avatar
廣告雜誌
2020-09-23