首先列出词典中不超过100000条不同的魔咒词条,每条格式为: [魔咒] 对应功能 其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。 词典之后的一行包含正整数N(<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”
[expelliarmus] the disarming charm [rictusempra] send a jet of silver light to hit the enemy [tarantallegra] control the movement of one's legs [serpensortia] shoot a snake out of the end of one's wand [lumos] light the wand [obliviate] the memory charm [expecto patronum] send a Patronus to the dementors [accio] the summoning charm @END@ 4 [lumos] the summoning charm [arha] take me to the sky
light the wand accio what? what?
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<String> myList = new ArrayList<String>(); while (scanner.hasNext()) { while (scanner.hasNext()) { String str = scanner.nextLine(); if (str.equals("@END@")) { break; } myList.add(str); } int n = scanner.nextInt(); scanner.nextLine(); //消耗换行符 for (int i = 0; i < n; i++) { String string = scanner.nextLine(); if (string.charAt(0) == '[') { //输入的是魔咒 int count = 0; for (int j = 0; j < myList.size(); j++) { String[] strs = myList.get(j).split("]"); if (string.substring(0,string.length()-1).equals(strs[0])) { System.out.println(strs[1].substring(1)); count++; break; } } if (count == 0) { //没有匹配 System.out.println("what?"); } }else { //输入的是功能 int count = 0; for (int j = 0; j < myList.size(); j++) { String[] strs = myList.get(j).split("]"); if (string.equals(strs[1].substring(1))) { System.out.println(strs[0].substring(1)); count++; break; } } if (count == 0) { //没有匹配 System.out.println("what?"); } } } } } }
import java.util.*; //有个换行 注意下 // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Map<String,String> map1 = new HashMap<>(); Map<String,String> map2 = new HashMap<>(); Scanner in = new Scanner(System.in); String curse = in.nextLine(); while(!curse.equals("@END@")){ int pos = curse.indexOf(']'); map1.put(curse.substring(0,pos + 1),curse.substring(pos + 2)); map2.put(curse.substring(pos + 2),curse.substring(1,pos)); curse = in.nextLine(); } int n = in.nextInt(); String blank = in.nextLine();//这里有个换行 for(int i = 0;i<n;i++){ String word = in.nextLine(); String res = map1.get(word); if(res == null){ res = map2.get(word); } System.out.println(res == null ? "What?" : res); } } }