leetcode:392.判断子序列
编辑
26
2024-04-03
Leetcode题目链接:392. 判断子序列
题目描述:
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"
是"abcde"
的一个子序列,而"aec"
不是)。
解题思路:
双指针遍历字符串比较
使用指针 i 遍历字符串 s,指针 j 便利字符串 t,cnt统计匹配成功的次数
每匹配到一对字符则 s 串指针 i 后移,匹配下一个字符
不管匹配成功与否每次比较都让 t 串的指针 j 后移一位(条件始终成立)
最后判断匹配成功的次数(cnt)与 s 串的长度是否相等即可得出结果
我的答案:
class Solution {
public:
bool isSubsequence(string s, string t) {
int m = s.size(),n = t.size();
int i = 0,j = 0;
int cnt = 0;
while(i < m && j < n){
if(s[i] == t[j]){
i++;
cnt++;
}
j++;
}
return cnt == m;
}
};
提交结果:
官方答案:
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;
}
};
作者:力扣官方题解
链接:https://leetcode.cn/problems/is-subsequence/solutions/346539/pan-duan-zi-xu-lie-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
总结:
显然我的思路与官方的解题思路是一致的,通过官方解法可知我的方法的cnt变量是多余的,使用 i 变量与字符串长度进行比较即可,若 i 与 n 不相等则未完全匹配。
- 0
- 0
-
赞助
AliPayWeChat Pay -
分享