题目地址:点击打开链接
题意:
给出一个“翻译-原文”的对应表,然后给出句子,要把句子中的原文都翻译出来。
大体思想:首先想到的就是用HashMap去存储翻译-原文对比表 然后把火星文的每个单词提取出来 根据key,value去比对 如果有key就输出翻译成英文对应的单词
否则就输出原文;
能够AC 毕竟java时间限制是10s c++是五秒
还有一种方法就是用字典树去做 才500ms; 废话不说先附上AC的java代码
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class hdu1075 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
String a,b;
Map<String,String> map=new HashMap<String, String>();
a=scan.next();
String str1=scan.nextLine();//去除回车字符
while(((a=scan.nextLine()).length())!=0){
String[] e=a.split(" ");
if(a.equals("END")){
break;
}
map.put(e[1], e[0]);//吧对照表放入HashMap中
}
a=scan.nextLine();
String str;
while(true){
str=scan.nextLine();
if(str.equals("END")){
break;
}
int len=str.length();
char d[]=str.toCharArray();
a="";
for(int i=0;i<len;i++){
if(97<=((int)d[i])&&((int)d[i])<=122){//循环 获取每个单词
a+=d[i];
}else{
if(map.containsKey(a)){//通过每个单词 去查找value
System.out.print(map.get(a));
}else{
System.out.print(a);
}
a="";
System.out.print(d[i]);
}
}
System.out.println();
}
}
}