ABC349C
思路
本质是找子序列,考虑遍历 $S$。 - 输入字符串 $S$ 和 $T$,遍历 $S$,如果发现 $T$ 中按顺序有对应字母就标记(如果是已经标记了就不能再次标记)。
-
判断时分两种情况:
-
$T$ 末尾有
X:只需要判断前面两个标记是否存在,如果存在,就输出Yes, 否则输出No。 -
$T$ 末尾没有
X:如果三个标记都存在,输出Yes, 否则输出No。
注意是有序的子序列,第一遍踩坑 WA 了 12 个点。
核心代码
string s, t;
bool a, b, c; // 标记
for(int i = 0; i < s.size(); i++)
{
s[i] -= 32; //转换成大写字母
if((a == 0 && b == 0 && c == 0) && s[i] == t[0]) a = 1;
else if(a && c == 0 && s[i] == t[1]) b = 1;
else if(a && b && s[i] == t[2]) c = 1;
// 如果符合条件就标记
}