package test_5; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /*No.418 ミンミンゼミ * * - まず "mi" から始まる。 * - その後いくつかの "-" がつく。"-" の数は 0 でもかまわない。 * - 最後に "n" で終わる。 * あなたの仕事は, 文字列 SS がいくつのミーン文字列を繰り返しているかを数えることです。 * */ public class Question_05_0525_1 { static final int MIN_LENGTH = 3; static final int MAX_LENGTH = 100; static final String FIRST_CHARACTER = "mi"; static final String LAST_CHARACTER = "n"; public static void main(String[] args) { InputStreamReader re = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(re); try { int minCount = 0; int StringCount = 0; String twoCharacter; String minString = br.readLine(); if (NumJudgment(minString)) { String[] minArray = minString.split(""); do { for (int i = StringCount; i < minArray.length; i++) { // minを探す twoCharacter = minArray[i] + minArray[i + 1]; if (twoCharacter.equals(FIRST_CHARACTER)) { StringCount = i + 2; //miの2文字分進める // nを探す for (int j = StringCount; j < minArray.length; j++) { if (minArray[j].equals(LAST_CHARACTER)) { StringCount = j + 1; //nの次から検索を始める minCount++; break; } } break; } // miがなければループ else { StringCount = i + 2;//miの2文字分進める } } } while (StringCount < minString.length()); // セミが何回「ミーン」と鳴いたかを出力 System.out.println(minCount); } else { System.out.println("桁数が不正です"); } } catch (IOException e) { System.out.println("エラーが発生しました"); } finally { try { re.close(); br.close(); } catch (IOException e) { System.out.println("InputStreamReader、BufferedReaderクローズ中にエラーが発生しました"); } } } // 有効値判定メソッド private static boolean NumJudgment(String minString) { Boolean result = false; if (MIN_LENGTH <= minString.length() && minString.length() <= MAX_LENGTH) { result = true; } return result; } }