一、題目介紹
給定字符串 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.
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/is-subsequence
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
二、解題思路
利用雙指針法解決該問題,思路爲在t中按照s的字符順序查找s中的每個字符,詳細請見代碼。
三、解題代碼
class Solution {
public:
bool isSubsequence(string s, string t) {
int i = 0, j = 0;
while(s[i] && t[j]) //雙指針法的應用,類似於滑動窗口的題目
{
if(s[i] == t[j])
i++;
j++;
}
if(s[i] == '\0') //通過'\0'判斷是否到達字符串的結尾
return true;
else
return false;
}
};