题目
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
进阶:
如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?
解答
class Solution {
public:
bool isSubsequence(string s, string t) {
int isSameCount = 0;
if (s.length() < 1) {
return true;
}
int lastIndex = 0;
int j = 0;
for (int i=0; i<s.length(); i++) {
for (; j<t.length(); j++) {
if (s.at(i) != t.at(j)) {
continue;
} else {
//保证字符串满足正序列匹配
if (lastIndex > j) {
return false;
}
lastIndex = j;
isSameCount++;
j++;
break;
}
}
if (isSameCount == s.length()) {
return true;
}
}
return false;
}
};