1178: 单词数 没有实现模块化

题目

1178: 单词数
时间限制: 1 Sec 内存限制: 128 MB
提交: 7017 解决: 2506

统计一篇文章里不同单词的总数。

输入
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由大小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每篇文章的单词数小于1000,每个单词最多由30个字母组成。

输出
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

样例输入 Copy
you are my friend

样例输出 Copy
4

代码

#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    string texts, sub_word;
    vector<string> svec;
    int cnt = 0;
    int exitFlag = 0;
    int flag = 0;   // 标记是否找到单词
    getline(cin, texts);
    while (!(texts == "#")) {
        exitFlag = 0;
        for (auto it = texts.begin(); it != texts.end(); it++) {
            if(isalpha(*it)) {
                sub_word += *it;
                if ((it + 1) == texts.end() || !isalpha(*(it + 1))) {

                    if ((it + 1) == texts.end())
                    {
                        for (auto it = svec.begin(); it != svec.end(); it++)
                        {
                            if (*it == sub_word)
                            {
                                flag = 1;
                                sub_word = "";
                            }
                        }
                        if (flag == 0)
                        {
                            svec.push_back(sub_word);
                            sub_word = "";
                        }
                        flag = 0;
                    }
                    else if (*(it + 1) != '#')
                    {
                        for (auto it = svec.begin(); it != svec.end(); it++) {
                            if (*it == sub_word) {
                                flag = 1;
                                sub_word = "";
                            }
                        }
                        if (flag == 0) {
                            svec.push_back(sub_word);
                            sub_word = "";
                        }
                        flag = 0;
                    }
                    else {
                        for (auto it = svec.begin(); it != svec.end(); it++) {
                            if (*it == sub_word) {
                                flag = 1;
                                sub_word = "";
                            }
                        }
                        if (flag == 0) {
                            svec.push_back(sub_word);
                            sub_word = "";
                        }
                        cout << svec.size() << endl;
                        exitFlag = 1;
                        break;
                    }
                }
            }
            else if (*it == '#') {
                exitFlag = 1;
                if (svec.size() > 0)
                    cout << svec.size() << endl;
                break;
            }
        }
        if (exitFlag == 0) {
            cout << svec.size() << endl;
            svec.clear();
            getline(cin, texts);
        }
        else break;

    }
    return 0;
}

总结

没有勇气实现模块化,代码快超过100行了!!!
刷题妖精!!!加油,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值