LeetCode 392. 判断子序列(双指针二分查找)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 392. 判断子序列(双指针二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。
你可以認為 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~= 500,000),而 s 是個短字符串(長度 <=100)。
字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,"ace"是"abcde"的一個子序列,而"aec"不是)。
示例 1: s = "abc", t = "ahbgdc" 返回 true.示例 2: s = "axc", t = "ahbgdc" 返回 false.后續挑戰 :
如果有大量輸入的 S,稱作S1, S2, … , Sk 其中 k >= 10億,你需要依次檢查它們是否為 T 的子序列。在這種情況下,你會怎樣改變代碼?
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/is-subsequence
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
2.1 雙指針
- 雙指針分別 i, j 指向 s, t
- s[i] == t[j] 時,才 i++
2. 二分查找
當有大量的字符串s時,應將所有字符的下標存進表里,進行二分查找,提高效率
二分查找參考
總結
以上是生活随笔為你收集整理的LeetCode 392. 判断子序列(双指针二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 540. 有序数组中的
- 下一篇: 程序员面试金典 - 面试题 16.26.