题解 | #单词识别#

单词识别

https://www.nowcoder.com/practice/16f59b169d904f8898d70d81d4a140a0?tpId=40&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan&difficulty=3&judgeStatus=3&tags=579&title=&sourceUrl=&gioEnter=menu

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

typedef struct{
	char w[20];
	int cnt;
}Word;

int cmp(const void *a,const void *b){
	Word *a1 = (Word *)a;
	Word *b1 = (Word *)b;
	if(a1->cnt == b1->cnt)return strcmp(a1->w,b1->w);
	else return b1->cnt - a1->cnt;
}

int main() {
	Word word[1000];
	
    char s[1000];
    char tmp[20];
    fgets(s, sizeof(s), stdin);
    s[strcspn(s,"\n")] = '\0';
	
	int i=0;
	int k=0,idx=0;
	while(s[i] != '\0'){
		int flag = 0;
		idx = 0;
		while(s[i] != '\0' && s[i] != ' ' && s[i] != '.'){
			tmp[idx++] = s[i++];
		}
		tmp[0] = tolower(tmp[0]);
		tmp[idx] = '\0';
		
		for(int i=0;i<k;i++){
			if(strcmp(tmp,word[i].w) == 0){
				flag = 1;
				word[i].cnt++;
				break;
			}
		}
		if(!flag){
			strcpy(word[k].w,tmp);
			word[k].cnt = 1;
			k++;
		}

	
		while(s[i] == ' ' || s[i] == '.')i++;
	}
	
	qsort(word,k,sizeof(Word),cmp);
	
	for(int i=0;i<k;i++){
		printf("%s:%d\n",word[i].w,word[i].cnt);
	}
    return 0;
}

全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务