关闭

蓝桥杯ADV-17算法提高 统计单词数

标签: 蓝桥杯
697人阅读 评论(0) 收藏 举报
分类:

问题描述
  统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母.
输入格式
  一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,  逗号和句号外, 这些输入的句子中不含其他非字母字符, 并且, 逗号和句号紧跟在它前面的英文单词后面, 中间没有空格. 段落最后一个字符是回车符,  表示输入结束.
输出格式
  若段落中共有M个不同的英文单词,则按照其在段落中出现的先后顺序输出M行,各行的格式为:  单词中所有字母均用大写形式输出(最长的单词顶格输出,它前面没有多余的空格;  其余单词与其右对齐)+冒号+N个*号+该单词在段落中的出现次数N
样例输入
This is a test. This test is easy. This is a test. This test is easy.

样例输出
THIS:****4
IS:****4
A:**2
TEST:****4
EASY:**2
分析:本来想用map映射做的,结果发现必须要根据单词出现的次序排列,而不是按照字典序排列。。所以不能用map了。。所以用了pair类型的vector存储~~虽然题目中说保证逗号和句号之后紧跟空格,结果测试用例骗人。。逗号和句号后面还是有一个空格的。。所以要多加个continue的判断,防止把空格记入单词数里面~还有就是输出的时候是大写字符,要把小写转换成大写再存储进去呢~~

#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
typedef pair<string, int> p;
int main() {
    string str;
    vector<p> v;
    getline(cin, str);
    string s;
    int flag2 = 0;
    int maxlen = 0;
    for(int i = 0; i < str.length(); i++) {
        if(flag2 == 1 && str[i] == ' ')
            continue;
        if(str[i] == '.' || str[i] == ' ' || str[i] == ',' ) {
            flag2 = 1;
            int len = s.length();
            maxlen = maxlen > len ? maxlen : len;
            for(int j = 0; j < len; j++) {
                if(s[j] >= 'a' && s[j] <= 'z') {
                    s[j] = s[j] - 32;
                }
            }
            int flag = 0;
            for(int i = 0; i < v.size(); i++) {
                if(v[i].first == s) {
                    v[i].second++;
                    flag = 1;
                }
            }
            if(flag == 0) {
                p temp = make_pair(s, 1);
                v.push_back(temp);
            }
            s = "";
        } else {
            flag2 = 0;
            s += str[i];
        }
    }
    for(int i = 0; i < v.size(); i++) {
        string temp = v[i].first;
        int len = maxlen - temp.length();
        for(int k = 0; k < len; k++) {
            cout << " ";
        }
        cout << v[i].first << ":";
        for(int j = 0; j < v[i].second; j++) {
            cout << "*";
        }
        cout << v[i].second << endl;
    }
    return 0;
}

2
0
查看评论

蓝桥杯 ADV-102 算法提高 单词个数统计

问题描述   编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。例如:字符串“this is a book”当中包含有4个单词。   输入格式:输入一个字符串,由若干个单词组成,单词之间用一个空格隔开。   输出格式:输出一个整数,即单词的个数。   输...
  • liuchuo
  • liuchuo
  • 2017-03-07 16:38
  • 221

算法提高 统计单词数

问题描述   统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式   一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,  逗号和句号外, 这些输...
  • qq_36238595
  • qq_36238595
  • 2017-03-07 05:35
  • 348

算法提高 统计单词数

问题描述   统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式   一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,  逗号和句号外, 这些输入的句子中不...
  • ReidSC
  • ReidSC
  • 2017-04-04 23:17
  • 271

c语言实现统计单词个个数

编程实现,从键盘上输入一行字符,统计其中单词的个数。 其中:单词以空格分隔,且空格的个数至少一个。 要求:数组类型为字符型       使用scanf输入一行字符。       输出:单词的个数。 &...
  • u012965373
  • u012965373
  • 2015-04-23 08:49
  • 2513

统计单词个数

谭浩强在其《C语言程序设计》中字符串处理那部分提到了一段代码,统计一个字符串中的单词个数 我自己写了一段代码,总是少一个单词,最后发现了原因,做下记录 我的代码: ////统计单词个数 // #include #include //错误的方法 int Coun...
  • zhccl
  • zhccl
  • 2012-09-01 21:48
  • 3804

蓝桥杯 历届试题 包含单词数

输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。 第一个单词前,最后一个单词后也可能有0到多个空格。 比如:" abc    xyz" 包含两个单词,"ab   c   xyz    &q...
  • linyuxilu
  • linyuxilu
  • 2016-03-12 20:34
  • 254

17.2统计单词个数

/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:王颖 * 完成日期:2013 年 12 月 17 日 * 版 本 号:v1.0 * * 输入描述: 无 * 问题描述:字符串与指针 * 程序输出:...
  • u012451600
  • u012451600
  • 2013-12-18 13:53
  • 634

算法提高 ADV-17 统计单词数

问题描述   统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式   一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,  逗号和句号外, 这些输...
  • smile_caijx
  • smile_caijx
  • 2017-08-22 00:27
  • 112

算法提高 统计单词数

问题描述   统计输入英文文章段落中不同单词(单词有大小写之分,  但统计时忽略大小写)各自出现的次数。 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式   一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,  逗号和句号外, 这些输入的句子中不...
  • qq_29656961
  • qq_29656961
  • 2017-01-23 12:03
  • 378

noip2011 统计单词数 (模拟)

P1689 统计单词数 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2011普及组第二题 描述     一般的文本编辑器都有查找单词的功能,该功能可以快速...
  • yuyanggo
  • yuyanggo
  • 2015-09-27 17:05
  • 1029
    个人资料
    • 访问:602787次
    • 积分:17041
    • 等级:
    • 排名:第697名
    • 原创:1113篇
    • 转载:0篇
    • 译文:0篇
    • 评论:206条
    谨以此献给正在努力刷题的你^_^
    打滚求打赏(๑ ̄ ̫  ̄๑)
    此处弱弱求打赏~~万一有好心人呢~~
    文章分类