AtCoder Beginner Contest 456 C

https://atcoder.jp/contests/abc456/tasks/abc456_c

DP的に、前の文字と隣に同じ文字無しに何文字続いているかを記憶していきます。
最後はやっぱり出力のところですね。

D <- 998244353
v <- scan("stdin", character())
S <- v[1]

char_to_int <- function(char) {
    if(char == "a") {
        return(1)
    } else if(char == "b") {
        return(2)
    } else {
        return(3)
    }
}

chars <- strsplit(S, "")[[1]]
i <- 0
n <- 0
s <- 0
for(char in chars) {
    j <- char_to_int(char)
    if(i != j) {
        n <- n + 1
    } else {
        n <- 1
    }
    i <- j
    s <- (s + n) %% D
}

cat(sprintf("%d", s), "\n")