[R6A] wow

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 字符串

数据规模:1n1061 \le n \le 10^6

思路

枚举起点 ii0in30 \le i \le n - 3),判断 S[i..i+2]S[i..i+2] 是否为 wow,是则答案加一。注意 wowow 中两个 wow 重叠,需要按起点逐个枚举,不能用不重叠匹配。

复杂度:时间 O(n)O(n),空间 O(n)O(n)

仓颉实现

import std.convert.*
import std.env.*

main() {
    let reader = getStdIn()
    let n = Int64.parse(reader.readln().getOrThrow())
    let s = reader.readln().getOrThrow()
    let r = s.toRuneArray()
    var ans: Int64 = 0
    for (i in 0..(n - 2)) {
        if (r[i] == r'w' && r[i + 1] == r'o' && r[i + 2] == r'w') {
            ans = ans + 1
        }
    }
    println(ans)
}