国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

leetcode刷題筆記: 792 number-of-matching-subsequences

2022-11-18 08:57 作者:StepfenShawn  | 我要投稿

題目地址:

https://leetcode.cn/problems/number-of-matching-subsequences/


Given a string s and an array of strings words, return the number of words[i] that is a subsequence of s.

A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.

For example, "ace" is a subsequence of "abcde".

Example 1:

Input: s = "abcde", words = ["a","bb","acd","ace"]

Output: 3

Explanation: There are three strings in words that are a subsequence of s: "a", "acd", "ace".

Example 2:

Input: s = "dsahjpjauf", words = ["ahjpjau","ja","ahbwzgqnuk","tnmlanowax"]

Output: 2


題目大意

給定一個字符串數組words, 輸出元素為s的子序列的個數。

首先想到的是dp, 結果只過了21個用例, 復雜度極高:

能不能優(yōu)化一下呢? 又想到了雙指針, 比dp快了一點過了40多個用例,結果繼續(xù)超時。。。

由于s的數據長度范圍太大了, dp的方法貌似不太好優(yōu)化,那么我們先來優(yōu)化一下雙指針。

我們再看一下子序列的性質:?

A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements.

注意到假如c是s的子序列, 那么 c 的字符一定在 s 中, 這很顯然, 并且 c 的字符順序和 s 是相同的。

我們首先對 s 進行操作, 收集每個字符出現(xiàn)的位置并記錄在一個數組中。容易證明記錄出現(xiàn)位置的這個數組是排好序的(在for循環(huán)作用下單調遞增了),因此我們可以用二分查找進行優(yōu)化,只要保證二分查找后的位置比當前位置大, 那么該字符串就為s的子序列了:


leetcode刷題筆記: 792 number-of-matching-subsequences的評論 (共 條)

分享到微博請遵守國家法律
竹北市| 油尖旺区| 醴陵市| 沛县| 南城县| 滨州市| 淮阳县| 永安市| 永济市| 临沭县| 新巴尔虎左旗| 吉木乃县| 三原县| 高安市| 莆田市| 上虞市| 西安市| 黑河市| 德江县| 沅江市| 左云县| 蓬安县| 朝阳县| 勐海县| 淮南市| 彭阳县| 南京市| 宜宾县| 板桥市| 沙雅县| 昆山市| 虹口区| 鱼台县| 绥江县| 鞍山市| 新乐市| 哈尔滨市| 登封市| 依安县| 霍邱县| 枣庄市|