(洛谷)题目题号 P5015 [NOIP2018 普及组] 标题统计

Hello大家好我是小亦,今天时发布题解的第二篇,最近有几个人留言,为什么不发布难点的题解,额主要嘛我没有太多时间,大家知道的,写一篇蓝色省选题解(指的是洛谷题目等级为高),至少要搞很久而且还要验题解是否出现问题这搞来搞去我都看着不行了qwq,本人也有学业在身qwq,不过还差一天放国庆,作者呢看看在这七天能不能出一个关于到省选的题目,这对我来说太难了QWQ,好了废话不多说,那么今天讲的题目是来自NOIP2018年普及组的真题,也是非常的简单,不废话了,思路赶紧给大家qwq:

首先呢这道题是要让我们求模拟和字符串,异常的简单,下面呢,是我规划的,如果又不懂私信在线问,必回qwq。

  1. 读取输入:首先,我们需要读取用户的输入,这是一个字符串。

  2. 初始化计数器:设置一个计数器来跟踪标题中的有效字符数。

  3. 遍历字符串:逐个检查字符串中的每个字符。

  4. 筛选有效字符:对于字符串中的每个字符,我们需要判断它是否是字母或数字。如果是,我们就将其计入计数器。

  5. 排除空格和换行符:确保在计数时排除空格和换行符。

  6. 处理换行符:由于在读取一行文本时,末尾可能会包含一个换行符,需要特别检查并排除。

  7. 输出结果:遍历完成后,输出计数器的值,这就是作文标题的有效字符数。

详细步骤

  1. 读取输入:使用 std::getline 函数从标准输入读取一行文本,这样可以包括空格。

  2. 初始化计数器:设置计数器 count 为 0。

  3. 遍历字符串:使用循环遍历字符串中的每个字符。

  4. 筛选有效字符:在循环中,使用 std::isalpha 函数检查当前字符是否是字母,使用 std::isdigit 函数检查是否是数字。如果任一条件满足,则增加计数器。

  5. 排除空格:由于我们只检查字母和数字,空格在这一步中自动被排除。

  6. 处理换行符:在循环结束后,检查字符串的最后一个字符是否是换行符。如果是,则从计数器中减去 1。

  7. 输出结果:使用 std::cout 输出计数器的值。

这个思路可以确保我们正确地计算出作文标题中的有效字符数,排除空格和换行符,嗯说完了思路代码给吧,在此小亦再次提醒大家,抄代码可耻哟

#include <iostream>
#include <string>
#include <cctype> // for isalpha and isdigit functions

int main() {
    std::string s;
    std::getline(std::cin, s); // Use getline to read the entire line including spaces

    int count = 0;
    for (size_t i = 0; i < s.length(); ++i) {
        // Check if it's an alphabet or digit and not a newline character
        if (std::isalpha(s[i]) || std::isdigit(s[i])) {
            count++;
        }
    }

    // Subtract one if the last character is a newline
    if (!s.empty() && s.back() == '\n') {
        count--;
    }

    std::cout << count << std::endl; // Output the count
    return 0;
}

这里呢我复杂化了,注释也标了请放心食用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值