原题如下:
短信
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;
}
最后修改:2019 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏