トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ABC-053-B A to Z String

■■■問題■■■

すぬけくんは文字列sの連続した一部分(部分文字列という)を取り出して
先頭がAであり末尾がZであるような文字列を作ることにしました。

すぬけくんが作ることのできる文字列の最大の長さを求めてください。
なお,sには先頭がAであり末尾がZであるような部分文字列が必ず存在することが保証されます。

■■■入力■■■

s

●1 <= |s| <= 20万
●sは英大文字のみからなる
●sには先頭がAであり末尾がZであるような部分文字列が必ず存在する

■■■出力■■■

答えを出力せよ。


C#のソース

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;

class Program
{
    static string InputPattern = "Input1";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("QWERTYASDFZXCV");
            //5
            //7文字目から11文字目までを取り出して、ASDFZを作ると、
            //先頭がA、末尾がZであるような文字列を得ることが可能です。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("ZABCZ");
            //4
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("HASFJGHOGAKZZFEGA");
            //12
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        string s = InputList[0];

        var Matches = Regex.Matches(s, "A.*Z");
        Console.WriteLine(Matches.Cast<Match>().Max(X => X.Length));
    }
}


解説

正規表現A.*Zにマッチする文字列の中で最長の長さを求めてます。