AOJ2369 CatChecker

問題リンク CatChecker

  • 解法

BNFの通りに解析を進めていき、解析を終えたときに正常に全ての文字を読むことができたらCatとなります。解析が途中で終わったり、読みのこしの部分が残っていたらRabbitです。

  • ソース
import java.util.Scanner;

//CatChecker
public class AOJ2369 {

	char[] s;
	int id;
	char get(){
		return s[id++];
	}
	
	void f(){
		char ch = get();
		if(ch!='m'){
			id--; return;
		}
		f();
		ch = get();
		if(ch!='e'){
			id--; return;
		}
		f();
		ch = get();
		if(ch!='w'){
			id--; return;
		}
		return;
	}
	
	void run(){
		Scanner sc = new Scanner(System.in);
		s = (sc.next()+"$").toCharArray();
		id = 0;
		f();
		System.out.println(s[id]=='$'?"Cat":"Rabbit");
	}
	
	public static void main(String[] args) {
		new AOJ2369().run();
	}
}