LeetCode 392——判斷子序列

一、題目介紹

給定字符串 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; 
    }
};

四、解題結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章