- 浏览: 601390 次
- 来自: ...
文章分类
最新评论
-
lgh1992314:
相同的元素呢
一种离散化方法 -
HelloSummerR:
圆心的位置是随机的,于是圆的部分会落到canvas外,那样就显 ...
HTML5 Canvas学习笔记(1)处理鼠标事件 -
hlstudio:
好久没见到sokuban了,这有个java版的,带源码,可以参 ...
求推箱子的最小步数(java) -
肖泽文:
太好了,谢谢你。。有中文注释!
HTML5 推箱子游戏过关演示动画 -
swm8023:
删除操作,将最后一个叶子节点插入后也有可能上浮吧
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
poj2503题意:
给出一个最多有100000对单词的英语和外语的字典,然后给你一个外语单词 要求你查字典翻译成英语,如果词典里查不到就输出eh。
样例:
Sample Input
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
Sample Output
cat
eh
loops
解法一:使用jdk中的Hashtable(或HashMap)
方法二:使用字典树
思路:用所有的外语单词去建一棵字典树,然后向这棵字典树中查找给出的单词
给出一个最多有100000对单词的英语和外语的字典,然后给你一个外语单词 要求你查字典翻译成英语,如果词典里查不到就输出eh。
样例:
Sample Input
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
Sample Output
cat
eh
loops
解法一:使用jdk中的Hashtable(或HashMap)
import java.util.Scanner; import java.util.Hashtable; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); Hashtable< String,String> table = new Hashtable< String, String>(); String input; String [] array=new String[2]; while(in.hasNext()){ input=in.nextLine(); if(input.length()==0)break; array=input.split(" "); table.put(array[1],array[0]); } while(in.hasNext()){ input=in.nextLine(); if(table.get(input)!=null) System.out.println(table.get(input)); else System.out.println("eh"); } } }
方法二:使用字典树
思路:用所有的外语单词去建一棵字典树,然后向这棵字典树中查找给出的单词
import java.util.Scanner; import java.text.DecimalFormat; class Trie{ //字典树 Trie next[] = new Trie[26];//所有儿子节点 String enWord;// 用于记录对应的英语单词 public Trie(){ enWord=null; } } public class Main{ Trie root = new Trie(); void solve() { Scanner in = new Scanner(System.in); String input; String [] array=new String[2]; while(in.hasNext()){//用所有外文字符串,构造字典树 input = in.nextLine(); if(input.length()==0) break; array=input.split(" "); insert(array[1],array[0]); } while(in.hasNext()){ input=in.nextLine(); System.out.println(search(input)); } } //建立字典树 public void insert(String str,String enWord) { //将一个外文字符串插入字典树 if (str == null || str.length() == 0) { return ; } Trie node = root; char[] letters=str.toCharArray(); for (int i = 0; i < str.length(); i++) { int pos = letters[i] - 'a'; if (node.next[pos] == null) { node.next[pos] = new Trie(); //node.son[pos].val = letters[i]; } node = node.next[pos]; } //外文字符串的最后一个节点,根节点到此节点构成了一个外文单词,此单词对应的英文单词为enWord; node.enWord = enWord; } // 在字典树中查找一个完全匹配的外文单词,返回其对应的英文单词. public String search(String str) { if (str == null || str.length() == 0) { return null; } Trie node = root; char[] letters=str.toCharArray(); for (int i = 0, len = str.length(); i < len; i++) { int pos = letters[i] - 'a'; if (node.next[pos] != null) { node = node.next[pos]; } else { return "eh"; } } return node.enWord; } public static void main(String[] args) { Main test = new Main(); test.solve(); } }
- main2503.zip (1.3 KB)
- 下载次数: 7
发表评论
-
求推箱子的最小步数(java)
2014-05-06 08:32 3746题目(poj1475):推箱子,要求箱子移动步骤最小。如图:T ... -
图的深搜+回溯练习题:POJ2197
2013-01-18 15:53 1654POJ 2197题意: 给定n个城市及其之间的距离,以及距 ... -
田忌赛马: POJ 2287(贪心解法)
2013-01-03 19:24 3054POJ 2287问题描述: 你一定听过田忌赛马的故事吧? ... -
滚动数组应用:POJ 1159
2012-12-29 21:52 1478POJ 1159题意: 回文词是一种对称的字符串。任意给 ... -
POJ2092:计数排序,求第K大的元素
2012-12-27 08:31 1929题目大意: 输入N和M,N就是N次测试,M是说每次测试产生 ... -
直接插入排序练习:POJ 2388
2012-12-26 09:42 1641关于直接插入排序请参看:http://128kj.iteye. ... -
堆排序练习:POJ 2388
2012-12-26 09:27 1870关于堆排序请参看:http://128kj.iteye.com ... -
大(小)顶堆练习:POJ 1442
2012-12-24 20:58 1878POJ1442题意: ADD(a)表示向集合中增加元素a ... -
大顶堆应用:POJ2010
2012-12-23 20:59 1897POJ2010题意: 奶牛学校招生,c头奶牛报名,要选 ... -
极角排序:POJ 1696(叉积+深搜)
2012-12-19 16:12 1766POJ1696题意: 一只很 ... -
凸包练习: POJ 2187(JAVA)
2012-12-17 19:31 1647分治化求凸包,请参看:http://128kj.iteye.c ... -
学习凸包(三):凸包练习 POJ 1113
2012-12-16 14:50 2248接上文:学习凸包(二) ... -
二维树状数组练习 POJ 2029
2012-12-13 19:53 1544关于二维树状数组请参 ... -
二维树状数组学习之二:练习POJ 1195
2012-12-12 21:40 1397接前文:二维树状数组学习之一:彻底理解http://128kj ... -
图的深搜+树状数组练习 POJ 3321(JAVA)
2012-12-11 11:13 1824关于树状数组:参看:http://128kj.iteye.co ... -
树状数组练习:POJ 3067
2012-12-09 17:10 1815关于树状数组,参看:http://128kj.iteye.co ... -
树状数组练习:POJ 2481(JAVA)
2012-12-08 18:11 1817关于树状数组,请参考:http://128kj.iteye.c ... -
线段树求逆序数(离散化)POJ 2299
2012-12-06 08:25 2100POJ2299题意: 给出长度为n的序列,每次只能交换 ... -
线段树练习POJ 3264
2012-12-03 21:16 1344问题:有n只奶牛排成一列,他们有各自的身高Hi,有Q个区间,分 ... -
在POJ中使用StreamTokenizer从命令行获取输入
2012-12-03 12:21 2152在http://poj.org/上用JAVA解题一般用 ...
相关推荐
在Java编程语言中,哈希表(HashTable)是一种常见的数据结构,它提供了高效的数据存储和检索功能。哈希表基于哈希函数将键(Key)映射到数组的索引位置,通过键值对(Key-Value Pair)来存储数据。这种数据结构允许...
对于Java开发者,虽然Java也有`Hashtable`类,但自Java 1.5以来,`java.util.HashMap`成为了更常用的选择,因为它同样提供了更好的性能和类型安全性。 总的来说,理解`Dictionary, TValue>`和`Hashtable`之间的差异...
Java集合专题总结:HashMap和HashTable源码学习和面试总结 本文总结了Java集合专题中的HashMap和HashTable,涵盖了它们的源码学习和面试总结。HashMap是一种基于哈希表的集合类,它的存储结构是一个数组,每个元素...
在Java编程中,`HashMap`与`HashTable`作为两种常用的数据结构,经常被用来存储键值对数据。尽管它们在功能上相似,但在实现细节、性能表现以及使用场景方面存在显著差异。本文将深入探讨两者之间的区别,帮助读者更...
在早期的Java版本中,`Hashtable`并没有直接支持泛型,这意味着你可以在其中存储任何类型的键(`Object`)和值(`Object`),这可能导致类型安全问题,比如在使用时进行强制类型转换。然而,随着Java 5的发布,泛型...
### hashMap和hashTable的区别 #### 一、简介与基本概念 `HashMap` 和 `HashTable` ...然而,在现代 Java 开发实践中,推荐使用 `ConcurrentHashMap` 来代替 `HashTable`,因为它提供了更好的性能和更丰富的功能集。
在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...
HashMap和HashTable是Java中两个常用的数据结构,都是基于哈希表实现的,但它们之间存在着一些关键的区别。本文将深入探讨HashMap和HashTable的底层原理,并总结常见的面试题。 HashMap的底层原理 HashMap是Java中...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务与客户端之间的数据传输。它以其简洁、易于阅读和编写的特点,成为编程语言间数据交互的首选。本篇文章将深入探讨如何...
在Java Web开发中,数据库操作是不可或缺的一部分,而基于Hashtable的数据存储和检索方式曾经是早期常用的手段之一。本文将深入探讨如何在Java Web环境中利用Hashtable进行数据库交互,并讨论其优缺点以及现代开发中...
**Hashtable的使用** 在Java编程语言中,`Hashtable`是一个基于键值对(key-value pairs)的数据结构,它属于同步的、线程安全的容器类。`Hashtable`是`Dictionary`类的一个子类,它不支持`null`键或`null`值。这个...
在Java编程语言中,`Hashtable` 和 `HashMap` 都是用来存储键值对的数据结构。这两种数据结构虽然相似,但是在实现细节上存在显著差异。 1. **Hashtable**:作为 `Dictionary` 类的子类,`Hashtable` 是 Java 最早...
在Java中,`HashTable`是早期版本(Java 1.0)提供的一种线程安全的哈希表实现。尽管现在已经被`HashMap`所替代,但理解`HashTable`的工作原理和特性仍然对深入理解Java集合框架以及数据结构有重要意义。 哈希表的...
在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程需求。本文将重点分析这三种数据结构之间的区别,特别是针对...
遍历Hashtable主要有两种方法:foreach循环和GetEnumerator方法。 1. 使用foreach循环遍历: ASP.NET支持C#语言,C#的foreach循环非常适合遍历集合。以下是一个简单的示例: ```csharp Hashtable myHashTable = new...
4. **不支持泛型**:由于`Hashtable`是早期Java版本的类,它没有使用泛型,因此键和值都使用`Object`类型,需要强制类型转换。 使用`Hashtable`的基本操作包括: - **插入元素**:使用`put(key, value)`方法将键值...
哈希表(Hashtable)是.NET框架中的一种常用数据结构,主要用作键值对存储,它提供了快速的数据存取方式。在WinForm应用程序中,我们可能会利用Hashtable来管理各种对象,尤其是在需要高效查找和操作数据时。下面将...
在Java编程语言中,`Hashtable`和`HashMap`是两种非常重要的数据结构,它们都实现了`Map`接口,用于存储键值对。尽管它们有着相似的功能,但在实现细节和应用场景上存在显著差异。接下来,我们将详细探讨`Hashtable`...