解题思路

根据题目意思,2次从头遍历字符串,对字符串进行匹配“XiaoQiao”和“XiaoHuiHui”。如果两次都匹配成功,输出Happy,否则输出emm。使用计算器cnt,初始化为0,for(int i=0;i<s.length();++i) 通过i遍历s字符串,如果s[i]==待匹配串的cnt位,++cnt,如果cnt==待匹配串长度,返回true。

戳我查看C++版本

Code

#include <stdio.h>
#include <string.h>

bool judge(const char* a, const char* b)
{
    int len = strlen(a), lenb = strlen(b);
    int j = 0;
    for (int i = 0; i < len; ++i) {
        if (a[i] == b[j])   ++j;
        if (j == lenb)  break;
    }
    return j == lenb;
}

const int N = 1e3 + 5;


int main() {
    char str[N];
    scanf("%s", str);
    if (judge(str, "XiaoQiao") && judge(str, "XiaoHuiHui"))
        puts("Happy");
    else
        puts("emm");
    return 0;
}