hdu 1075 What Are You Talking About

翻译 2015年07月08日 20:59:41

题意:用字典把火星历史书翻译成英文,注意边界。


import java.util.Scanner;

public class P1075a {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// 输入字典的部分
		String s1 = "";// 接输入的字符
		String a = "";
		s1 = sc.nextLine();
		s1 = sc.nextLine();
		while (!s1.equals("END")) {
			a += s1;
			a += "\n";
			s1 = sc.nextLine();
		}
		// 输入书的部分
		String s2 = "";// 接输入的字符
		String b = "";
		s2 = sc.nextLine();
		s2 = sc.nextLine();
		while (!s2.equals("END")) {
			b += s2;
			b += "\n";
			s2 = sc.nextLine();
		}
		// 处理数据,***核心***
		for (int i = 0; i < b.length();) {
			// 1)先取出b中的一个火星单词
			int m = 0;
			for (int j = i; j < b.length(); j++) {
				char ch = b.charAt(j);
				if (!(ch <= 'z' && ch >= 'a' || ch == '\'')) {
					m = j;
					break;// 这个要写啊!
				}
			}
			String bWord = b.substring(i, m);// b中火星单词
			// 2)取出a中的一个火星单词的起始位置
			int middle = a.indexOf(bWord);// 没有找到就返回-1
			boolean boo = false;
			if (middle > 0) {// 找到了
				// 3)确定是不是a中火星单词的子串
				char aCh1 = a.charAt(middle - 1);
				char aCh2 = a.charAt(middle + bWord.length());
				if (aCh1 == ' ') {
					if (aCh2 == '\n') {
						boo = true;
					}
				}
			}
			if (boo) {// 字典中真的找到了火星语
				// 4)找到a中的英语单词
				int n = 0;
				for (int j = middle - 2; j >= 0; j--) {
					if (a.charAt(j) == '\n') {
						n = j + 1;// 不要换行符
						break;// 这个要写啊!会死的!!!
					}
				}
				// 希望是火星语,,不然程序必wa
				String word = a.substring(n, middle - 1);// 英语单词,范围[n,middle-1)
				// 5)替换b中的bWord
				b = b.replace(bWord, word);// 返回一个新的字符串
				// 6)修改i的位置
				i = i + word.length();// 正好最后一个,走出单词的最后一个,一定不是单词了
			} else {
				i = i + bWord.length();
			}
			// 7)确定i的位置,可能出现两个非字母字符
			if (i != (b.length() - 1)) {
				char ch = b.charAt(i + 1);
				if (ch <= 'z' && ch >= 'a') {
					i += 1;
				} else {
					i += 2;
				}
			}
		}
		System.out.println(b);
	}

}



What Are You Talking About

你说的是什么?
Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K (Java/Others)
Total Submission(s): 15929    Accepted Submission(s): 5163


Problem Description
Ignatius is so lucky that he met a Martian yesterday. But he didn't know the language the Martians use. 
伊格内修斯很幸运,他昨天遇到了一个火星人。但他不知道火星人用的语言。
The Martian gives him a history book of Mars and a dictionary when it leaves. 
当他离开时,火星人给了他一本历史书和一本字典。
Now Ignatius want to translate the history book into English. Can you help him?
 现在伊格内修斯想把历史书翻译成英语。你能帮助他吗?

Input
The problem has only one test case, the test case consists of two parts, the dictionary part and the book part. 
这个问题只有一个测试用例,测试用例由两部分组成,字典和书。
The dictionary part starts with a single line contains a string "START", this string should be ignored, then some lines follow, each line contains two strings, 
字典部分的起始行包含一个字符串 "START"(开始),这个字符串应该被忽略,接下来的每一行,都包含两个字符串。
the first one is a word in English, the second one is the corresponding word in Martian's language. 
第一个是一个英文单词,第二个单词是与之匹配的火星文,
A line with a single string "END" indicates the end of the directory part, and this string should be ignored. 
如果有一行是"END",那么表示字典部分结束了,这一行应该被忽略。
The book part starts with a single line contains a string "START", this string should be ignored, then an article written in Martian's language. 
书的那部分,第一行是以"START"字符串开始的,这一行应该被忽略,那后是一篇用火星语写的文章。
You should translate the article into English with the dictionary.
你因该用字典吧火星语翻译成英语。
If you find the word in the dictionary you should translate it and write the new word into your translation, 
如果你在字典中找到了这个火星词,那么用英语代替火星词;
if you can't find the word in the dictionary you do not have to translate it, and just copy the old word to your translation. 
如果在字典中找不到这个词,那么不需要修改他。
Space(' '), tab('\t'), enter('\n') and all the punctuation should not be translated. 
空格,制表符,换行符和所有的标点符号都不需要修改。
A line with a single string "END" indicates the end of the book part, and that's also the end of the input.
"END"表示书的部分结束,也代表整个输入结束。
 All the words are in the lowercase, and each word will contain at most 10 characters, and each line will contain at most 3000 characters.
 所有单词都是用小写,每一个单词最长也只有十个字符,每一行最多有3000个字符。

Output
In this problem, you have to output the translation of the history book.
 这个题目,你应该把历史书翻译成英语。

Sample Input
START from fiwo hello difh mars riwosf earth fnnvk like fiiwj END START difh, i'm fiwo riwosf. i fiiwj fnnvk! END
 

Sample Output
hello, i'm from mars. i like earth!
Hint
Huge input, scanf is recommended.
 

Author
Ignatius.L

杭电1075——What Are You Talking About(字典树应用)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075主要算法: 一开始使用数组存储英文和对应的火星文,排序,再折半查找,结果超时。后来,百度了下,改...
  • qianchangdiyin
  • qianchangdiyin
  • 2016年02月04日 11:29
  • 150

LoadRunner英语面试问题(附答案)

What is load testing? - Load testing is to test that if the application works fine with the loads th...
  • qiu5213173
  • qiu5213173
  • 2015年05月30日 11:33
  • 358

勉励--你的阅读造就了你 You are what you read

文/沈奇岚 亲爱的:   大学生活还是让你不满意么?课程枯燥,老师敷衍,有人创业,有人恋爱。你心志不低,想要一份光辉的未来。可是,你说大一过得浑浑噩噩,大二也在稀里糊涂中即将过去。每天醒来你都告诉自己...
  • a842604818
  • a842604818
  • 2013年10月29日 22:28
  • 479

你的阅读造就了你 You are what you read

转自:http://blog.csdn.net/poem_qianmo/article/details/12624551 在豆瓣上看到的一篇很有思想和正能量的文章,在这里请允许我用原创的...
  • u012723995
  • u012723995
  • 2015年10月27日 11:55
  • 332

你的阅读造就了你 You are what you read

如果你是在校的大学生或者研究生博士生,这篇文章会让你有很多的共鸣。如果你已真正的踏入这个社会,也将受益匪浅。 电脑那端的你: 大学生活还是让你不满意么?课程枯燥,老师敷衍,有人创业,有人恋爱。你...
  • zhmxy555
  • zhmxy555
  • 2013年10月11日 22:31
  • 22834

你的阅读造就了你 You are what you read

在豆瓣上看到的一篇很有思想和正能量的文章,在这里请允许我用原创的方式来呈现给大家。如果你是在校的大学生或者研究生博士生,这篇文章会让你有很多的共鸣。如果你已真正的踏入这个社会,也将受益匪浅。 ...
  • luop911123
  • luop911123
  • 2014年05月27日 19:09
  • 388

面试流程中90%以上几率被问到的问题---务必要提前想好你的答案

ell me about yourself. 介绍自己。 What are your strengths? 你有哪些强项? What are your weaknesses? ?你有哪些弱点...
  • wuxiaobingandbob
  • wuxiaobingandbob
  • 2016年09月26日 12:55
  • 1649

你的阅读造就了你 You are what you read

电脑那端的你:   大学生活还是让你不满意么?课程枯燥,老师敷衍,有人创业,有人恋爱。你心志不低,想要一份光辉的未来。可是,你说大一过得浑浑噩噩,大二也在稀里糊涂中即将过去。每天醒来你都告诉自己要...
  • qishi2014
  • qishi2014
  • 2015年03月26日 22:52
  • 215

解析配置文件 redis.conf(七)

# Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k...
  • qq_29347295
  • qq_29347295
  • 2018年01月15日 09:01
  • 17

Master-Master MySQL 复制安装配置试验

Master-MasterMySQL 复制安装配置试验   一、  架构 二、  安装Mysql server 下面以在DB1(192.168.0.10)的配置为例,DB2的配置基本一样,只要修...
  • hbsong75
  • hbsong75
  • 2014年09月23日 17:59
  • 1388
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 1075 What Are You Talking About
举报原因:
原因补充:

(最多只允许输入30个字)