【AtCoder-Ruby】ABC104 B - AcCepted
問題
問題文
文字列 S が与えられます。 S のそれぞれの文字は英大文字または英小文字です。
S が次の条件すべてを満たすか判定してください。
- S の先頭の文字は大文字の A である。
- S の先頭から 3 文字目と末尾から 2 文字目の間(両端含む)に大文字の C がちょうど 1 個含まれる。
- 以上の A, C を除く S のすべての文字は小文字である。
制約
- 4 ≤|S| ≤10(|S| は文字列 S の長さ)
- S のそれぞれの文字は英大文字または英小文字である
考えたこと
回答
S = gets.strip if !S[0].eql?('A') puts 'WA' elsif !(S[2, S.size - 3].count('C') == 1) puts 'WA' elsif !S[1..-1].match(/[ABD-Z]/).nil? puts 'WA' else puts 'AC' end
考察
もっと良い書き方は?(正解者を参照)
なるほど。シンプルに正規表現でかけばOKか。
s = gets.strip puts s.match(/^A[a-z]+C[a-z]+$/) ? 'AC' : 'WA'