HDU 1075 What Are You Talking About

题目地址:点击打开链接


题意: 
给出一个“翻译-原文”的对应表,然后给出句子,要把句子中的原文都翻译出来。


大体思想:首先想到的就是用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();
		}
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值