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

No.341 沈黙の期間

■■■問題■■■

与えられた文字列から、文字"…"が一番長く続く個数を出力してください。

ヒント:"…"は3文字ではありません。

■■■入力■■■

S

Sとして (BOMなし、改行以外の印字可能な) UTF-8文字列が与えられます。
UTF-8文字列の長さは1文字以上100文字以下です。

■■■出力■■■

一番長く続く"…"の個数を出力してください。
"…"が一度も現れなかった場合、0を出力してください。
最後に改行してください。 


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "InputX";

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

        if (InputPattern == "Input1") {
            WillReturn.Add("……何でもないです。");
            //2
            //"……"が一番長く連続するので、その"…"の個数は2
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("………別に………");
            //3
            //"………"が2箇所で出現するが、その片方の"…"の個数は3
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("……………");
            //5
            //"……………"の個数は5
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

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

        int Answer = 0;
        int SeqCnt = 0;
        for (int I = 0; I <= S.Length - 1; I++) {
            if (S[I] == '…') {
                SeqCnt++;
            }
            if (S[I] != '…' || I == S.Length - 1) {
                if (Answer < SeqCnt) Answer = SeqCnt;
                SeqCnt = 0;
            }
        }
        Console.WriteLine(Answer);
    }
}


解説

ナイーブに数えてます。