题解 | #使用字符函数统计字符串中各类型字符的个数#

使用字符函数统计字符串中各类型字符的个数

http://www.nowcoder.com/practice/31bdbc70188f48e995fa3cbef36613c8

题目的主要信息:

  • 录入一句话,统计这句话中字母字符、数字字符、空白、标点符号和其它字符的个数
  • 要求使用字符函数

具体做法:

这道题不是用字符数组读入的字符串,而是直接用了string类。我们可以用length函数直接判断字符串的长度,然后遍历字符串,对于遍历到的字符依次用函数检查每个字符属于哪一类,相应类的变量加1.

字符判断函数 作用
isalpha() 判断字符是否是字母('a'-'z' 'A'-'Z')
isdigit() 判断字符是否是数字
isspace() 判断字符是否是空格、制表符、换行等标准空白
isalnum() 判断字符是否是字母或者数字
ispunct() 判断字符是标点符号
islower() 判断字符是否是小写字母('a'-'z')
isupper() 判断字符是否是大写字母('A'-'Z')

我们依次使用前三个函数检查字符即可,最后剩下的就是其他字符。

alt

#include <iostream>
#include <string>

using namespace std;

int main() {

	string str;
	getline(cin, str);

	int whitespace = 0;
	int digits = 0;
	int chars = 0;
	int others = 0;

	// write your code here......
    for(int i = 0; i < str.length(); i++){ //遍历字符串
        if(isalpha(str[i])) //判断是否是字母
           chars++;
        else if(isdigit(str[i])) //判断是否是数字
           digits++; 
        else if(isspace(str[i])) //判断是否是空格
           whitespace++;
        else
           others++;
    }
    
	cout << "chars : " << chars
		<< " whitespace : " << whitespace
		<< " digits : " << digits
		<< " others : " << others << endl;

	return 0;

}

复杂度分析:

  • 时间复杂度:O(n)O(n)O(n)nnn为字符串长度,遍历整个字符串
  • 空间复杂度:O(1)O(1)O(1),常数空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论
这些字符判断函数是string库带有的吗?我看网上这几个函数都是介绍说在cctype库里,可是这个代码只引入了string头文件
点赞 回复 分享
发布于 2021-12-02 09:41

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
13
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务