LeetCode 75 第十一题(392)判断子序列

题目:

LeetCode 75 第十一题(392)判断子序列_第1张图片

示例:

LeetCode 75 第十一题(392)判断子序列_第2张图片

分析:

给两个字符串s和t,问s是不是t的子序列.即判断t中能不能提取出s(s有的元素,t都要有.并且字符的相对顺序不能变,如果字符的相对顺序能变的话就不能用双指针来做,而是要用哈希表了,可以参考力扣383赎金信这题).

这题虽然简单,但是是练习双指针的一个很好的题目.

我们定义两个指针si,ti分别指向s和t,如果两个指针指向的字符相同,则代表t中含有s的其中一个元素,然后两个指针都往右移动.如果不相同,则只移动指向t的指针,直到寻找到和指向s的指针指向的元素相同.

到最后,如果指向s的指针指向了s的末尾,则表示t含有s的全部元素,即s是t的子序列,反之则不是.

代码+运行结果:

class Solution {
public:
    bool isSubsequence(string s, string t) {
        int si=0,ti=0;
        while(si

LeetCode 75 第十一题(392)判断子序列_第3张图片

你可能感兴趣的:(LeetCode75题解,leetcode,算法,c++,数据结构)