现在的位置: 首页 > 综合 > 正文

判定字符串

2013年02月01日 ⁄ 综合 ⁄ 共 1903字 ⁄ 字号 评论关闭
import java.io.*;

/*
 * 
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。

 是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
输入: 
输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000。
输出: 
对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
样例输入: zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo
样例输出: Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer
*/
public class ZOJ {
	private class string_list{
		String v=null;
		string_list next=null;		
		public  string_list add_to_end(string_list begin,string_list end){
			if(begin.next==null){
				begin.next=this;
			}
			else{
				end.next=this;
			}
			end = this;
			return end;
		}
	}
	string_list data;
	string_list data_end;
	string_list result;
	string_list result_end;
	public ZOJ(){
		this.data=new string_list();
		this.data_end=null;
		this.result=new string_list();
		this.result_end=null;
	}
	public static void main(String arg[]) {
		ZOJ zoj=new ZOJ();
		zoj.run();
	}
	public String AC(String s){
		if(s.equals("zoj"))
			return "Accepted";
		String regex2="[o]*zoj[o]*";
		if(s.matches(regex2)){
			int first=s.indexOf('z');
			if(first!=s.length()-3-first)
				return "Wrong Answer";
			return "Accepted";
		}
		String regex3="[o]*z[o]+j[o]*";
		if(s.matches(regex3)){
			int z=s.indexOf('z');
			int j=s.indexOf('j');
			int o=j-1;
			String a=s.substring(0, z);
			String b=s.substring(z+1, o);
			String c=s.substring(j+1, s.length());
			if(c.startsWith(a)){
				c=c.substring(a.length(), c.length());
				return AC(a+"z"+b+"j"+c);
			}
			return "Wrong Answer";
		}
		return "Wrong Answer";
	}
	public void run(){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s;
		try {
			while((s=br.readLine())!=null&&s.length()>0){
				string_list sl=new string_list();
				sl.v=s;
				sl.next=null;
				this.data_end=sl.add_to_end(data, data_end);
				string_list result=new string_list();
				result.v=this.AC(s);
				result.next=null;
				this.result_end=result.add_to_end(this.result, result_end);
			}
			br.close();
			string_list sl=this.result;
			while(sl.next!=null){
				sl=sl.next;
				System.out.println(sl.v);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

抱歉!评论已关闭.