这是第59次牛客练习赛的第一题,我也是太菜了,难度标记为困难就只能通过这一题,难度中等的比赛还说的过去。这是题目:
我的想法使用栈,先将键入的字符串逐个推入栈中,然后逐个出栈,满足有XiaoHuiHui或者XiaoQiao的顺序的话就把标记设置为true,当标记都为true时说明是Happy反之输出emm
AC代码如下:
#include<iostream>
#include<string>
#include<cstring>
#include<stack>
using namespace std;
bool flag1 = false;
bool flag2 = false;
int main(void)
{
bool flag = false;
string n;
stack<char> aa;
string a = "XiaoQiao";
string b = "XiaoHuiHui";
cin >> n;
for (int i = n.size() - 1; i >= 0; i--)
{
aa.push(n[i]);
}
int i = 0, j = 0;
while (!aa.empty())
{
if (aa.top() == a[i]|| aa.top() == b[j])
{
if(aa.top() == a[i])i++;
if (aa.top() == b[j])j++;
}
aa.pop();
if (i == a.size() && j == b.size())
{
cout << "Happy" << endl;
flag = true;
break;
}
}
if (flag == false)cout << "emm" << endl;
system("pause");
return 0;
}