Skip to content

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;
     // 如果符合条件就标记
}