Hello大家好我是小亦,今天时发布题解的第二篇,最近有几个人留言,为什么不发布难点的题解,额主要嘛我没有太多时间,大家知道的,写一篇蓝色省选题解(指的是洛谷题目等级为高),至少要搞很久而且还要验题解是否出现问题这搞来搞去我都看着不行了qwq,本人也有学业在身qwq,不过还差一天放国庆,作者呢看看在这七天能不能出一个关于到省选的题目,这对我来说太难了QWQ,好了废话不多说,那么今天讲的题目是来自NOIP2018年普及组的真题,也是非常的简单,不废话了,思路赶紧给大家qwq:
首先呢这道题是要让我们求模拟和字符串,异常的简单,下面呢,是我规划的,如果又不懂私信在线问,必回qwq。
读取输入:首先,我们需要读取用户的输入,这是一个字符串。
初始化计数器:设置一个计数器来跟踪标题中的有效字符数。
遍历字符串:逐个检查字符串中的每个字符。
筛选有效字符:对于字符串中的每个字符,我们需要判断它是否是字母或数字。如果是,我们就将其计入计数器。
排除空格和换行符:确保在计数时排除空格和换行符。
处理换行符:由于在读取一行文本时,末尾可能会包含一个换行符,需要特别检查并排除。
输出结果:遍历完成后,输出计数器的值,这就是作文标题的有效字符数。
详细步骤
读取输入:使用 std::getline 函数从标准输入读取一行文本,这样可以包括空格。
初始化计数器:设置计数器 count 为 0。
遍历字符串:使用循环遍历字符串中的每个字符。
筛选有效字符:在循环中,使用 std::isalpha 函数检查当前字符是否是字母,使用 std::isdigit 函数检查是否是数字。如果任一条件满足,则增加计数器。
排除空格:由于我们只检查字母和数字,空格在这一步中自动被排除。
处理换行符:在循环结束后,检查字符串的最后一个字符是否是换行符。如果是,则从计数器中减去 1。
输出结果:使用 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;
}