任何疑问、意见、建议请留言公众号:一航代码
大家都很关心考试的难易程度。K老师出题有一个规律,在出题之前,他会随机写下一个字符串,只要在这个字符串中能按顺序找到E,A,S,Y四个字母,他出题就会比较简单。你拿到了字符串,请你告诉别人题目难不难吧。
输入格式:
输入的数据有多组,每组占一行,由一个字符串组成(字符串的长度不超过1000)。
输出格式:
对于每组输入数据,输出一行,对应一个要求的答案(题目简单就输出easy,难就输出difficult)
输入样例:
eAsy
SEoAtSNY
EEEEEAASSSYYY
输出样例:
difficult
easy
easy
解决方法:
(1)算法思想:
定义一个match函数,将s字符串逐位和cmp = “EASY”字符串相比较,若s字符串的当前字符和cmp当前字符相同,则指向cmp的下标 j 和指向s字符串的下标 i 都增加1。若 j 指向了cmp的尾部 ,则s字符串中按相对顺序含有EASY,返回true。若比较至s字符串尾部,j≠4,则返回false。
(2)代码实现:
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
/*
输入样例:注意:循环接受字符串输入需用ctrl+z结束
EEEEAAAASSSSSYYY
EAESY
SEoAtSNY
easy
eAsy
输出:
easy
easy
difficult
difficult
difficult
@一航代码
*/
bool match(string s)
{
if (s.size() > 1000)
{
return false;
}
string cmp = "EASY";
for (int i = 0, j = 0; i < s.size();)
{
if (s[i] == cmp[j])
{
j++;
i++;
if (j == (int)cmp.size())
{
return true;
}
}
else
{
i++;
}
}
return false;
}
int main()
{
string s;
while (cin >> s) //需用ctrl+z结束输入
{
if (match(s))
{
cout << "easy" << endl;
}
else
{
cout << "difficult" << endl;
}
}
system("pause");
return 0;
}