原题如下:
短信
1000(ms)
65535(kb)
522 / 2350
某日,小Y同学迷恋上一女生,于是决定向该女生表白。可是,悲剧往往发生在帅哥身上。在小Y同学表白后,该女生发来一短信,该短信由一行字符串组成。并告知小Y同学,如若能从中找出字符串 “i”“love”“you”三个字符串,并且这三个字符串在短信中是顺序的,并且任意两个不能相邻,则表示她喜欢小Y同学。请你写一段程序帮小Y同学解决这个问题吧!
输入
N组测试数据,
每组测试数据一行
输出
对应每组测试数据的结果,如果存在 顺序的 并且互不相邻 的三个字符串“i”“love”“you”串则输出“Yes”,否则输出“No”
样例输入
2
Iloveanbyou
woibuloveayou
样例输出
No
Yes
一开始用strstr函数发现会wa。。。学长举出个例子便一直放着,今天用一种傻傻的办法AC了。代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n;
char s[200];
scanf("%d", &n);
while (n--)
{
scanf("%s",s);
int len = strlen(s);
int count = 0;
for (int i = 0; i < len; i++)
{
if (s[i] == 'i')
{
for (int j = i + 2; j < len-3; j++)
{
if (s[j] == 'l' && s[j + 1] == 'o' && s[j + 2] == 'v' && s[j + 3] == 'e')
{
for (int k = j + 5; k <len-2; k++)
{
if (s[k] == 'y' && s[k + 1] == 'o' && s[k + 2] == 'u')
{
count++;
}
}
}
}
}
}
if (count != 0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
system("pause");
return 0;
}