【leetcode】392 Is Subsequence

是否是子串


描述

给定两个字符串 s , t , 需要判断 s 是否是 t 的子串。注意 abcabkc 的子串,也就是说,t 中不必包含连续的 s 子串。s 的长度在 100 以内, t 的长度在 500 k 以内。

样例

样例1

1
2
输入: s = "abc", t = "ahbgdc"
输出: true

样例2

1
2
输入: s = "axc", t = "ahbgdc"
输出: false

思路

建立两个标识的遍历符号,一旦 s 完成遍历就返回 true ,这与两重循环有区别。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
bool isSubsequence(string s, string t) {
if (s.size() == 0) { return true; }
int ps = 0, pt = 0;
while (pt < t.size()) {
if (s[ps] == t[pt]) {
ps++;
if (ps >= s.size()) { return true; }
}
pt++;
}
return false;
}
};

添加下述代码会使得运行更加的快:

1
2
3
4
5
static int any = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();

参考

原题链接
代码参考链接