题目:
易彰彪最近有点奇怪,一向爱打游戏他最近居然盯着一张全是大小写字母的表在看,好像在找什么东西。他说,这是他女神给他的一张表,他需要回答女神的问题——在忽略大小写(即大写字母和小写字母视为同一字母)的情况下,是否能在表中找到某一连续的字符串(第
i
行的尾部和第
i+1 行的头部视为相连)。但是英语不好的易彰彪一看到字母就头晕,聪明的你能帮他解决这个问题吗
思路:先把字符都连接到一起,然后全转换成小写,然后找到首字符相同的,若首字符满足,继续判断。整个字符满足则输出。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char a[1000], b[40],c[1000];
int n, m,i,j;
while (cin >> n >> m)
{
memset(a, 0, sizeof(a));
for (i = 0; i < n; i++)
{
cin >> b;
strcat(a, b);//连接字符串
}
cin >> c; int cnum = strlen(c),anum=strlen(a);//总字符的长度和要判断的字符
bool flag = 0;
if (anum >= cnum)
{
for (i = 0; i < cnum; i++)
if (c[i] >= 'a'&&c[i] <= 'z')
c[i] -= 32;//全部转换成小写
for (i = 0; i < anum; i++)
if (a[i] >= 'a'&&a[i] <= 'z')
a[i] -= 32;//大小写字母差32
for (i = 0; i < anum; i++)
{
if (a[i] == c[0])
{
int temp = i;
for (j = 0; j < cnum&&temp < anum; )
{
if (c[j] != a[temp])
break;
j++; temp++;
}
if (j >= cnum)
{
flag = 1;
break;
}
}
}