https://codeforces.com/contest/1547/problem/B
STL yyds
INPUT
11
a
ba
ab
bac
ihfcbadeg
z
aa
ca
acb
xyz
ddcba
OUTPUT
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
题意
给N,给N个字符串,(有点难说,看图)(我知道表述很水,但来看题解了应该都懂题目叭)
反正从a-z顺序从‘a’起始放字母 且必须在串的左右(建议看题目,太菜了表达不了无法表述)
解题思路
采用STL的deque容器,其特质是可以任意从头和尾加入或去除(好像queue也行。。。),将字符串放入队列,然后从 ’z‘ 至 “a” 由外向里拨开字符串。详情见代码。
AC代码
#include <deque>
#include <iostream>
using namespace std;
bool isalpha(string a)
{
deque<char> str;
for (auto c : a)
{
str.emplace_back(c); //存入
}
for (int i(a.length() - 1); i >= 0; --i)
{
if ('a' + i == str.front()) //判断前面是否是否合理
str.pop_front();
else if ('a' + i == str.back()) //判断后面是否字符串合理
str.pop_back();
else //出问题(没找到对应该有的字符)则直接输出false了
return false;
}
return true;
}
int main()
{
string x;
int t;
cin >> t;
while(t--)
{
cin >> x;
cout << (isalpha(x) ? "YES" : "NO") << endl;
}
return 0;
}
STL yyds
如有问题请指正,本人虚心受教