[R47A]三数二母串


数据规模:1≤∣s∣≤1001 \le |s| \le 100,ss 由大写字母、小写字母和数字构成。

思路

按定义直接模拟:从左到右扫描字符串 ss 的每个字符,若是数字字符就重复 33 次,若是字母字符就重复 22 次,依次拼接即得三数二母串。

逐字节判断字符类别(数字 '0'–'9' 的 ASCII 值为 4848–5757,大写字母 'A'–'Z' 为 6565–9090,小写字母 'a'–'z' 为 9797–122122),逐字符直接 print 输出。

复杂度:时间 O(∣s∣)O(|s|),空间 O(∣s∣)O(|s|)。

仓颉实现

查看仓颉实现
import std.env.*

main() {
    let reader = getStdIn()
    let s = reader.readln().getOrThrow()
    for (ch in s) {
        if (ch >= 48u8 && ch <= 57u8) {
            let r = Rune(UInt32(ch))
            print(r)
            print(r)
            print(r)
        } else if ((ch >= 65u8 && ch <= 90u8) || (ch >= 97u8 && ch <= 122u8)) {
            let r = Rune(UInt32(ch))
            print(r)
            print(r)
        }
    }
    println()
}