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();
	}
}