AOJ2362 Chicken or the Egg
問題リンク Chicken or the Egg
- 解法
まとめると、次のように答えを求められます。
同じ単語が続いてる箇所で切る。
切ってできた文字列の中で一番単語数が多いものを選ぶ。複数ある場合は最初のものを選ぶ。
その文字列の最後の単語が答え。
eggとchickenを別の1文字で置き換えると少し処理が早くなると思います。
- ソース
import java.util.ArrayList; import java.util.List; import java.util.Scanner; //Chicken or the Egg public class AOJ2362 { void run(){ Scanner sc = new Scanner(System.in); String s = sc.next().replace("egg", "E").replace("chicken", "C"); List<String> l = new ArrayList<String>(); int p = 0; for(int i=0;i+1<s.length();i++){ if(s.charAt(i)==s.charAt(i+1)){ l.add(s.substring(p, i+1)); p = i+1; } } l.add(s.substring(p, s.length())); String res = ""; int m = 0; for(String t:l){ if(m<t.length()){ m = t.length(); res = t.charAt(m-1)=='E'?"egg":"chicken"; } } System.out.println(res); } public static void main(String[] args) { new AOJ2362().run(); } }