[leetcode] 392. Is Subsequence 解題報告
題目連結:https://leetcode.com/problems/is-subsequence/
Given a string s and a string t, check if s is subsequence of t.
You may assume that there is only lower case English letters in both s and t. t is potentially a very long (length ~= 500,000) string, and s is a short string (<=100).
A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ace"
"abcde"
while "aec"
is
not).
Example 1:
s = "abc"
, t = "ahbgdc"
Return true
.
Example 2:
s = "axc"
, t = "ahbgdc"
Return false
.
Follow up:
If there are lots of incoming S, say S1, S2, ... , Sk where k >= 1B, and you want to check one by one to see if T has its subsequence. In this scenario, how would you change your code?
思路:只要用兩個指標來判斷當前兩個字串中的字元是否相等即可.
程式碼如下:
class Solution { public: bool isSubsequence(string s, string t) { if(s.size()>t.size()) return false; int len1 = s.size(), len2 = t.size(), k1 = 0, k2 = 0; while(k1 < len1 && k2 < len2) { if(s[k1]==t[k2]) k1++; k2++; } return k1 == len1; } };