您的位置:首页 > 编程语言 > Java开发

ACM POJ 2503 (Babelfish)

2014-01-19 22:23 507 查看
题目链接 http://poj.org/problem?id=2503

程序一 字典树

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
Trie trie = new Trie();
while (scn.hasNext()) {
String string = scn.nextLine();
if (0 == string.length()) {
break;
}
String[] language = string.split(" ", -1);
trie.insert(language[0], language[1]);
}
while (scn.hasNext()) {
System.out.println(trie.search(scn.nextLine()));
}
scn.close();
}

}

class Trie {

private Node root;

public Trie() {
root = new Node(new Node[26], null);
}

public void insert(String english, String foreign) {
Node current = root;
for (int i = 0; i < foreign.length(); ++i) {
if (null != current.getChildrenItem(foreign.charAt(i) - 'a')) {
current = current.getChildrenItem(foreign.charAt(i) - 'a');
} else {
Node newNode = new Node(new Node[26], null);
current.setChildrenItem(foreign.charAt(i) - 'a', newNode);
current = newNode;
}
}
current.setEnglish(english);
}

public String search(String foreign) {
Node current = root;
for (int i = 0; i < foreign.length(); ++i) {
if (null != current.getChildrenItem(foreign.charAt(i) - 'a')) {
current = current.getChildrenItem(foreign.charAt(i) - 'a');
} else {
return "eh";
}
}
return current.getEnglish();
}

}

class Node {

private Node[] children;
private String english;

public Node(Node[] children, String english) {
this.children = children;
this.english = english;
}

public Node getChildrenItem(int i) {
return children[i];
}

public void setChildrenItem(int i, Node node) {
children[i] = node;
}

public String getEnglish() {
return english;
}

public void setEnglish(String english) {
this.english = english;
}

}

程序二 HashMap类

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
Map<String, String> map = new HashMap<String, String>();
while (scn.hasNext()) {
String string = scn.nextLine();
if (0 == string.length()) {
break;
}
String[] language = string.split(" ", -1);
map.put(language[1], language[0]);
}
while (scn.hasNext()) {
String foreign = scn.nextLine();
if (map.containsKey(foreign)) {
System.out.println(map.get(foreign));
} else {
System.out.println("eh");
}
}
scn.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM POJ 2503 JAVA