Leetcode刷题日记(十)

Leetcode刷题日记(十),第1张

又来到一晚一度的leetcode刷题时间。


今天我们继续看双指针。


为什么总是分享双指针的题目?肯定是因为经典又好用啦。


好啦,分享最好一道双指针的题目(应该是最后一道了,明天博主努力找别的知识点的经典题目,hhh)。


直接上题目:

 

基本思路;

我们初始化两个指针 ii 和 jj,分别指向 ss 和 tt 的初始位置。


每次贪心地匹配,匹配成功则 ii 和 jj 同时右移,匹配 ss 的下一个位置,匹配失败则 jj 右移,ii 不变,尝试用 tt 的下一个字符匹配 ss。


最终如果 ii 移动到 ss 的末尾,就说明 ss 是 tt 的子序列。


解题方法:

class Solution

{
public:
    bool isSubsequence(string s, string t)

   {
        int n = s.length(), m = t.length();//求长度
        int i = 0, j = 0;
        while (i < n && j < m)

       {
            if (s[i] == t[j])

           {
                i++;
            }
            j++;
       }
        return i == n;
    }
};

这其实和“看毛片(KMP)”算法很相似,不懂的,没关系,自己上网或查书,以后我也会分享的。


本贴为博主亲手整理。


如有错误,请评论区指出,一起进步。


谢谢大家的浏览.

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/577787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存