洛谷 P1308 统计单词数 总结
写这道题的时候思路变了好几次,也卡了好久,最终想到一种比较适合像我这样的初学者理解的一种解法。
-
大概思路
大概思路就是比较单词和句子,如果有一样的就记录次数和第一次出现的位置。 -
保存输入的单词和句子
```c
#include<stdio.h>
#include<string.h>
char word[20],sen[1000000]; //写外面空间大
int main(void)
{
gets(word); //存单词 也可以用fgets不过要处理换行符;
sen[0]=' '; //将句子的第一个单词前面放上空格,方便比较;
gets(&sen[1]); //存句子
strcat(sen," "); //将句子结尾后面放上一个空格,方便比较;
int len1,len2;
len1=strlen(word);len2=strlen(sen); //保存单词和句子长度;
这里使得句子中的每个单词间以空格分开,方便之后的比较
注释:
```c
char *gets(char *str);
gets()读一行字符串,遇到换行符会抛弃然后加上一个’\0’
char *fgets(char *str, int n, FILE *stream)
fgets()会保留换行符,而且安全一些 (懒得处理换行符,就没用…)
- 将所有字符统一格式方便比较
int i,j;
for(i=0;i<len1;i++)