AtCoderBeginnerContest230 B問題200点 「Triple Metre」
https://gyazo.com/83df7a2ec990e4b4f64f261c77fc730d
問題概要
制約
$ |S| \leq 10
解法・お気持ち
文字列$ Tは、oxx の文字列を $ 10^5個結合したもの、と問題文にかいてあります。
しかし、実際に$ 10^5個も連結する必要はありません。
与えられる文字列$ Sの長さはたかだか 10 です。
よって、oxx の文字列を 20 個ほど連結したものを用意すれば判定できるはずです。
これは、$ T がoxx oxx oxx のように周期性のある文字列であるためです。
よって、実際に oxx を 20 個ほど連結した$ Tを用意して、$ Sを含んでいるかを調べればよいです。
計算量
$ O(|S| + |T|)
新たな学び
Go では、S[i:j] で部分文字列を取り出せる
反省点
コード
code: go
func main() {
io := NewIo()
defer io.Flush()
// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
S := io.NextLine()
L := len(S)
T := ""
for i := 0; i < 100; i++ {
T += "oxx"
}
for i := 0; i < 100; i++ {
fmt.Println("Yes")
return
}
}
fmt.Println("No")
}