喵喵在开发一个新式的社交网络,现在她想要写一个模块来处理文本并计算其中不同标签的数量。
文本由小写英文字母,数字,符号 # 以及空格四种字符组成。我们把若干个连续的非空格字符定义成一个词,词的左右两边要么是空格要么就是文本的开头或者结尾。若一个词的长度大于 1 ,第一个字符是 # 而其它的字符都不是 #,那我们称这个词是一个标签。
现在喵喵想计算文本中出现的不同标签的数量,并将其打印出来。
输入格式:
在一行中输入一个长度不超过 10
5
的字符串 str 表示要处理的文本
输出格式:
先在一行中输出一个整数 n,代表文本中出现的不同标签的个数
接下来 n 行,每行打印一个标签和这个标签出现的次数
标签可以按任何顺序打印
输入样例:
i have brought #peace #freedom #justice and #security to my new empire
输出样例:
4
#freedom 1
#justice 1
#peace 1
#security 1
输入样例:
#to #be #or #not #to #be
输出样例:
4
#be 2
#not 1
#or 1
#to 2
做了一半 ,剩下的如何计数用什么做谁会
#include <stdlib.h>
#include<string.h>
#include<stdio.h>
int main()
{
char zifu[1000];
char results[100][1000];
gets(zifu);
int num=0,m=0,i=0,j=0,flag=1;
if(zifu[0]!='#'){
flag=0;
}
for(i=0;i<strlen(zifu);i++){
if(' '==zifu[i]){
printf("\n");
m=0;
if(i<(strlen(zifu)-1)&&zifu[i+1]!='#'){flag=0;
//num++;
}else if(zifu[i+1]=='#'){
num++;flag=1;
}
continue;
} else {
if(flag==1){
results[num][m]=zifu[i];
m++;
}
}
}
for(j=1;j<=num;j++){//
if(strlen(results[j])>=2&&results[j][0]=='#'){
printf("%s\n",results[j]);
}
}
return 0;
}