一.目的
感觉挺有意思,要考虑的东西很多。比如,怎么得出第一个相同单词的下标,并将它保存起来。怎么只比较以空格隔开的单词,还有防止越界等。
二.题目大意
三.大体思路
因为要比较单词是否相同, 就在一个while()内以空格为界线,去逐个判断各个字母是否相同,用一个数组将每一个相同单词首字母的下标记录下来(这里应该可以优化,不用开辟空间,我下去再想想)。
四.代码
/*统计单词个数 */
# include <stdio.h>
# include <string.h>
int sum =0;
int a[1000003];
int main(void)
{
char str1[12];
char str2[1000005];
gets(str1);
gets(str2);
int t =0;
int len1 = strlen(str1);
int len2 = strlen(str2);
for(int i = 0; i<len2; i++)
{
int c = 0;
int num =0;
while(str2[i] != ' ')//单词比较的地方,遇到空格直接跳出
{
if((str1[c] == str2[i]) || (str1[c]+32 == str2[i]) || (str1[c] == str2[i]+32))
{
num+=1;
}
i+=1;
if(i>=len2)//防止i>=len2时while没有结束
break;
c+=1;
if(c > len1)//防止一个单词是 toasdfsf 的情况
{
num =0;
}
}
if(num == len1)//通过个数来比较
{
sum+=1;
a[t] = i-c;//i-c刚好为单词首元素的下标
++t;
}
}
a[t] = '\0';
if(sum!=0)
printf("%d %d\n",sum, a[0]);
else
printf("-1\n");
return 0;
}