[R21B]字符字数


数据规模:1s1051 \le |s| \le 10^5ss 仅包含小写字母。

思路

题意即统计字符串 ss 中字符 dmy 的出现次数。由于 ss 全由小写字母组成,每个字符的 UTF-8 编码即为单个字节且 ASCII 值固定,因此直接逐字节扫描整个字符串,维护三个计数器,遇到对应字节就累加,最后输出即可。

复杂度

时间 O(s)O(|s|),空间 O(1)O(1)

仓颉实现

import std.env.*

main(): Int64 {
    let reader = getStdIn()
    let s = reader.readln().getOrThrow()
    var d = 0
    var m = 0
    var y = 0
    for (ch in s) {
        if (ch == 100) {        // 'd'
            d += 1
        } else if (ch == 109) { // 'm'
            m += 1
        } else if (ch == 121) { // 'y'
            y += 1
        }
    }
    println("${d} ${m} ${y}")
    return 0
}