B - Sandwich Number Editorial by cirno3153
正規表現を用いた解法今回のような問題は、正規表現を用いて判定することができます。
fun main() {
val S = readLine()!!
println(if (Regex("^[A-Z][1-9][0-9]{5}[A-Z]$").matches(S)) "Yes" else "No")
}
このように、正規表現^[A-Z][1-9][0-9]{5}[A-Z]$
を用いると \(S\) が条件を満たすか判定できます。
実際に確認してみましょう。
^
は行頭にマッチするので、ここから始まることを示す[A-Z]
は任意の英大文字にマッチするので、 \(1\) 文字目と \(8\) 文字目が英大文字であることを示す[1-9]
は \(1\) 以上 \(9\) 以下の整数にマッチするので、 \(2\) 文字目が \(0\) でない整数であることを示す[0-9]{5}
は \(0\) 以上 \(9\) 以下の整数が \(5\) 回続くものにマッチするので、 \(3\) 文字目から \(7\) 文字目が整数であることを示す$
は行末にマッチするので、ここで終わることを示す
これは、問題文で与えられた条件と等しいです。
なお、次のように書いても今回の制約下では正答となります。
fun main() {
val S = readLine()!!
println(if (Regex("""\D[1-9]\d{5}\D""").matches(S)) "Yes" else "No")
}
posted:
last update: