HDU 1075 what are you talking about?

题目:

输入:这个问题只有一个测试案例,包括两部分,字典部分和书籍部分。字典部分有”START“字符串所在的一行开头,跟随一些行,每一行有两个字符串,一个是英语单词,另一个 是对应的火星文。一个写着“END”的一行表示字典部分的结束。书籍部分也以“START”所在的行为开始,中间为火星文写的一段话。你要通过字典将其翻译为英文。如果这个词在字典中你应该翻译它,如果不存在,不用翻译,直接复制到你的翻译中。空格制表换行符还有标点符号不需要翻译。一个写有"END"的行表示书籍的结束,也表示输入的结束。所有词都是小写,每个词最多包含10个字符,每一行最多有3000个字符。

输出:在这个问题中,你需要输出这段历史书。。

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!
import java.util.*;

public class Main1075 {
	public static void main(String[] args) {
		HashMap<String, String> hm = new HashMap<String, String>();
		Scanner cin = new Scanner(System.in);
		if (cin.next().equals("START")) {
			String word;
			while (!(word = cin.next()).equals("END")) {                  //将start和end 之间的所有火星文-地球文对存入map
				hm.put(cin.next(), word);
			}
		}
		cin.nextLine();
		if (cin.nextLine().equals("START")) {

			String word;
			while (!(word = cin.nextLine()).equals("END")) {
				StringBuilder sb = new StringBuilder();
				for (int i = 0; i < word.length(); i++) {             

					char zm = word.charAt(i);                     //每次读入一行,并将一行的每个字符进行判断
					if (zm <= 'z' && zm >= 'a') {
						sb.append(zm);

					}
					if (!(zm <= 'z' && zm >= 'a')) {              //直到读到一个非a~z的字符,将之前读入的字符组成单词进行查阅

						if (sb != null && hm.get(sb.toString()) != null)
							System.out.print(hm.get(sb.toString()));
						else
							System.out.print(sb);         //如果字典中存在给字符串,则替换,否则原样输出
						sb.delete(0, sb.length());
						System.out.print(zm);
					}

				}
				System.out.println();                                 //记得输出一个换行符,接着读取下一行,并在下一行输出
			}
		}

	}
}


你可能感兴趣的:(map,字典翻译)