こんにちは、ナナオです。

前回に引き続き競プロを実施していきたいと思います。

今回の問題は以下です。

ランレングス圧縮の復元 | アルゴ式

実装

以下のように実装しました。

package main
import (
    "fmt"
    "strconv"
)

func isNum(r byte) bool {
    if 10 > int(r - '0') && int(r - '0') >= 0 {
        return true
    }
    return false
}

func main() {
    var t, s string
    fmt.Scan(&t)
    i := 0
    for ; i < len(t); {
        j := 1
        for ; i+j < len(t); j++ {
            if !isNum(t[i+j]) {
                break
            }
        }
        n, _ := strconv.Atoi(t[i+1:i+j])
        for k := 1; k <= n; k++ {
            s += string(t[i])
        }
        i += j
    }
    fmt.Println(s)
}

割と時間かかってしまいました。

文字が数値かどうか判定するための関数を実装して、次の文字が数値か判定して繋ぎ合わせるみたいな感じです。

ということで今回はこれで👍