B2109 统计数字字符个数

2024-05-28 12:44

本文主要是介绍B2109 统计数字字符个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

统计数字字符个数

题目描述

输入一行字符,统计出其中数字字符的个数。

输入格式

一行字符串,总长度不超过 255 255 255

输出格式

输出为 1 1 1 行,输出字符串里面数字字符的个数。

样例 #1

样例输入 #1

Today is 2021-03-27

样例输出 #1

8

方法1

解题思路:

本题要求统计给定字符串中数字字符的个数。我们可以遍历字符串的每个字符,判断其是否为数字字符,如果是则计数器加一。具体步骤如下:

  1. 初始化一个计数器 count,用于统计数字字符的个数,初始值为 0 0 0

  2. 遍历字符串的每个字符 c

  3. 对于每个字符 c,判断它是否为数字字符:

    • 如果 c 的 ASCII 码在 48 到 57 之间(即数字字符 ‘0’ 到 ‘9’),则将计数器 count 1 1 1
    • 否则,不做任何操作。
  4. 遍历完整个字符串后,计数器 count 的值即为数字字符的个数。

C++代码实现:

#include <iostream>
#include <string>
using namespace std;int countDigits(string s) {int count = 0;for (char c : s) {if (c >= '0' && c <= '9') {count++;}}return count;
}int main() {string s;getline(cin, s);int result = countDigits(s);cout << result << endl;return 0;
}

代码解释:

  1. 定义了一个函数 countDigits,用于统计字符串中数字字符的个数。函数接受一个字符串 s 作为参数,返回数字字符的个数。

  2. countDigits 函数中,定义了一个计数器变量 count,初始值为 0 0 0,用于统计数字字符的个数。

  3. 使用基于范围的 for 循环遍历字符串 s 的每个字符 c

  4. 对于每个字符 c,使用条件语句判断它是否为数字字符:

    • 如果 c 的 ASCII 码在 48 到 57 之间(即数字字符 ‘0’ 到 ‘9’),则将计数器 count 1 1 1
    • 否则,不做任何操作。
  5. 循环结束后,count 的值即为数字字符的个数。

  6. 函数返回 count

  7. main 函数中,使用 getline 函数读取一行输入,即待统计的字符串,并将其存储在变量 s 中。

  8. 调用 countDigits 函数,将字符串 s 作为参数传入,得到数字字符的个数,并将结果存储在变量 result 中。

  9. 输出 result,即为数字字符的个数。

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是字符串的长度。我们需要遍历字符串的每个字符,对每个字符进行常数时间的判断操作。
  • 空间复杂度: O ( 1 ) O(1) O(1)。我们只使用了常数个变量,空间复杂度为常数。

该解决方案的关键是判断每个字符是否为数字字符,可以根据字符的 ASCII 码范围来进行判断。通过遍历字符串的每个字符,我们可以统计数字字符的个数,最终得到结果。

方法2

C++代码实现:

#include <iostream>
#include <string>
#include <cctype>
using namespace std;int countDigits(string s) {int count = 0;for (char c : s) {if (isdigit(c)) {count++;}}return count;
}int main() {string s;getline(cin, s);int result = countDigits(s);cout << result << endl;return 0;
}

代码解释:

  1. countDigits 函数中,我们定义了一个计数器变量 count,初始值为 0 0 0,用于统计数字字符的个数。

  2. 使用基于范围的 for 循环遍历字符串 s 的每个字符 c

  3. 对于每个字符 c,使用 isdigit 函数判断它是否为数字字符:

    • 如果 isdigit(c) 为真(即 c 是数字字符),则将计数器 count 1 1 1
    • 否则,不做任何操作。
  4. 循环结束后,count 的值即为数字字符的个数。

  5. 函数返回 count

  6. main 函数中,使用 getline 函数读取一行输入,即待统计的字符串,并将其存储在变量 s 中。

  7. 调用 countDigits 函数,将字符串 s 作为参数传入,得到数字字符的个数,并将结果存储在变量 result 中。

  8. 输出 result,即为数字字符的个数。

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n 是字符串的长度。我们需要遍历字符串的每个字符,对每个字符进行常数时间的判断操作。
  • 空间复杂度: O ( 1 ) O(1) O(1)。我们只使用了常数个变量,空间复杂度为常数。

这种方法与方法一类似,但是使用了 isdigit 函数来判断字符是否为数字字符,而不是直接比较 ASCII 码。isdigit 函数是 C++ 标准库中的一个函数,用于判断字符是否为十进制数字字符。它在 <cctype> 头文件中定义。

使用 isdigit 函数可以使代码更加简洁和可读,同时也提高了代码的可移植性,因为不同的字符编码可能会影响直接比较 ASCII 码的方式。

这篇关于B2109 统计数字字符个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010601

相关文章

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

如何将一个文件里不包含某个字符的行输出到另一个文件?

第一种: grep -v 'string' filename > newfilenamegrep -v 'string' filename >> newfilename 第二种: sed -n '/string/!'p filename > newfilenamesed -n '/string/!'p filename >> newfilename

O(n)时间内对[0..n^-1]之间的n个数排序

题目 如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序 思路 把整数转换为n进制再排序,每个数有两位,每位的取值范围是[0..n-1],再进行基数排序 代码 #include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A,

【Python 千题 —— 算法篇】字符统计

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在编程中,对字符串的字符统计是一个常见任务。这在文本处理、数据分析、词频统计、自然语言处理等领域有广泛应用。无论是统计字母出现的频率,还是分析不同字符类型的数量,字符串字符统计都是非常有用的技术。 字符统

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻!!! 字符分类函数 字符: 这个概念,我们在以前的文章中讲过了。我们键盘输入的信息都是字符。字符大体可以分为两类——单个字符,字符串。而单个字符又可以进行分类——字母字符,数字字符,特殊字符和不可见字符。进行思维图展示: 在日

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。

如何判断一个数组中是否包含一个字符或字符串

第一种方法:遍历数组 String[] arr1 = {"1","2","3","4","6","7"}; for (int i = 0; i < arr1.length; i++) { if("5".equals(arr1[i])) { System.out.println("包含"); }else { System.out.println("不包含"); } } 第二种方法:先把数组