トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
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);
}
}
解説
ナイーブに数えてます。