[ABC349C] Airport Code 题解
wfirstzhang · · 题解
ABC349C
原题链接
思路
本质是找子序列,考虑遍历
-
输入字符串
S 和T ,遍历S ,如果发现T 中按顺序有对应字母就标记(如果是已经标记了就不能再次标记)。 -
判断时分两种情况:
注意是有序的子序列,第一遍踩坑 WA 了 12 个点。
Code
#include <bits/stdc++.h>
using namespace std;
string s, t;
bool a, b, c; // 标记
int main() {
cin >> s >> t;
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;
// 如果符合条件就标记
}
if((a && b && c) || (a && b && t[2] == 'X')) cout << "Yes" << endl;
// 判断两种情况,有其中一种就输出Yes
else cout << "No" << endl;
return 0;
}