Leetcode刷题日记(十)

本文介绍了一道LeetCode上的双指针算法题目,讲解了如何通过双指针判断一个字符串是否是另一个字符串的子序列。博主分享了基本思路和解题代码,并将此方法与KMP算法进行了简单对比。文章鼓励读者自行研究并讨论相关算法。
摘要由CSDN通过智能技术生成

又来到一晚一度的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)”算法很相似,不懂的,没关系,自己上网或查书,以后我也会分享的。

本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值