题目描述
大家都很关心考试的难易程度。K老师出题有一个规律,在出题之前,他会随机写下一个字符串,只要在这个字符串中能按顺序找到E,A,S,Y四个字母,他出题就会比较简单。你拿到了字符串,请你告诉别人题目难不难吧。
输入格式:
输入的数据有多组,每组占一行,由一个字符串组成(字符串的长度不超过1000)。
输出格式:
对于每组输入数据,输出一行,对应一个要求的答案(题目简单就输出easy,难就输出difficult)
输入样例:
eAsy
SEoAtSNY
输出样例:
difficult
easy
算法的基本思想
由于要比较的内容已经确定为EASY,那么可以另外设计一个辅助字符串,里面存储的即是这四个字母,设计两个指针i,j,指针i指向给定的字符串,指针j指向辅助的字符串,当配时,指针i,j均向后移动一位,则
(1)若i指向了给定了字符串的尾部,而j未指向尾部,那么输出difficult;
(2)若j指向了辅助字符串的尾部,则输出easy。
在本题中,我们加入一个输入的字符串的个数来统计随机的个数。
代码实现
C++版
#include <iostream>
#include <string>
#include <vector>
#include <string>
using namespace std;
bool match(vector<char> &a)
{
int i,j=0;
char tmp[4]={'E','A','S','Y'};
for (i=0;i<a.size();i++)
{
if(a[i]==tmp[j])
j++;
if(j==4)
break;
}
if (j==4) //判断EASY 四个字符是否全部找到,找到返回true,否则返回false
return true;
else
return false;
}
int main()
{
string word;
vector<char>ver;
while(cin>>word)
{
ver.clear(); //每次重新输入清空容器
for(int i=0;i<word.length();i++)
ver.push_back(word.at(i));
if(match(ver))
cout<<"easy"<<endl;
else
cout<<"difficult"<<endl;
}
return 0;
}
Java版
import java.util.Scanner;
public class EasyProblem {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()) {
String str= scan.nextLine();
if( match(str) )
System.out.println("easy");
else
System.out.println("difficult");
}
}
public static Boolean match(String s) {
int i,j=0;
String easy = "EASY";
for (i=0;i<s.length();i++) {
if(s.charAt(i) == easy.charAt(j))
j++;
if(j>3)
break;
}
if (j<=3) //判断EASY 四个字符是否全部找到,找到返回true,否则返回false
return false;
else
return true;
}
}