又来到一晚一度的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)”算法很相似,不懂的,没关系,自己上网或查书,以后我也会分享的。
本贴为博主亲手整理。
如有错误,请评论区指出,一起进步。
谢谢大家的浏览.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)