OCAC暑期比赛第一场 H题 聊天室 题解

聊天室
原题链接:http://codeforces.com/problemset/problem/58/A
【题目描述】
聪聪最近学会了使用Internet。
于是他进入了一个聊天室,并决定向大家打一声招呼——说“hello”。
但是因为聪聪的手指不是很灵活,所以他在打“hello”的过程中可能会触碰到一些别的键盘。
聪聪打了一个字符串 s 。
对于这个字符串 s ,如果我们能够从 s 中删除一些字符(当然也可以不删除),使得剩下的字符在不交换次序的情况下恰好等于“hello”,那么我们就可以认为聪聪打了“hello”。
举个例子:
如果聪聪打了一串字符串 "ahhellllloou" ,我们就可以认为他打了 "hello";
而如果聪聪打了一串字符串  "hlelo" ,我们则认为他没有打 "hello" 。
请帮忙确定我们会认为聪聪打了 "hello" 还是没有打。
【输入格式】
输入包含一个字符串 s ,用于表示聪聪打的字符。s 的长度不会超过 100。
【输出格式】
对于聪聪输入的字符串 s ,如果我们认为他打了 "hello",则输出 "YES";否则,输出 "NO"。
【输入样例1】
ahhellllloou
【输出样例1】
YES
【输入样例2】
hlelo
【输出样例2】
NO
【题目分析】
我们可以开一个变量 cnt,cnt一开始等于 0,然后我们去遍历字符串 s。
对于每一个遍历到的字符 c:
如果 c == 'h' && cnt == 0 , cnt ++;
如果 c == 'e' && cnt == 1 , cnt ++;
如果 c == 'l' && cnt == 2|3 , cnt ++;
如果 c == '0' && cnt == 4 , cnt ++;
如果 cnt > 4, 直接输出 "YES" 并退出;
如果到结束的时候cnt <= 4,则输出“NO”。
实现的代码如下:

#include <bits/stdc++.h>
using namespace std;

string s;
int n, cnt;

int main() {
    cin >> s;
    n = s.length();
    for (int i = 0; i < n; i ++) {
        char c = s[i];
        if (c == 'h' && cnt == 0) cnt ++;
        else if (c == 'e' && cnt == 1) cnt ++;
        else if (c == 'l' && (cnt == 2 || cnt == 3) ) cnt ++;
        else if (c == 'o' && cnt == 4) {
            puts("YES");
            return 0;
        }
    }
    puts("NO");
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/ocac/p/11113437.html