题意

统计一行字符串中数字字符的个数。

思路

对每个字符调用 isdigit();布尔值可以直接求和,真值贡献 11。

代码

Python代码

python
text = input()
print(sum(character.isdigit() for character in text))

C++代码

cpp
#include <cstdio>
#include <cstring>
char str[500];
int main(){
    int cnt = 0;
    while(1){
        int ans = scanf("%s",str);
        if( ans == EOF)
            break;
        int len = strlen(str);
        int i;
        for (i=0;i<len;i++){
            if( str[i] >= '0' && str[i] <= '9')
                cnt++;
        }
    }
    printf("%d",cnt);
    return 0;
}

复杂度

设字符串长度为 nn,时间复杂度为 O(n)O(n),额外空间复杂度为 O(1)O(1)。

总结

字符分类统计可直接配合生成器表达式和 sum。