hdu1113 字典查找 java版

来源:互联网 发布:印度民俗知乎 编辑:程序博客网 时间:2024/05/17 02:12

题目链接:点击

题目大概意思是给出一个单词对比表 然后找出对应单词所有对应表中符合的单词 不考虑字母顺序 只需要单词所包含的字母相同即可

大概思路:通过hashMap去存储对应表 然后在查询

java中的HashMap 非常让人头疼的一点就是 没办法通过value去查找相应的key 因为这道题目中key对应的value有很多种 只可以key存对应表中的单词 value存排序过后的,然后通过唯一的value去查找key

AC代码

import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set;public class Main{    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner scan=new Scanner(System.in);        String str,s;        Map<String,String> map =new HashMap<String, String>();        while(((str=scan.nextLine()).length())!=0&&!str.equals("XXXXXX")){           //输入对应表 单词 排序过后存value 元单词存key            char a[]=str.toCharArray();            Arrays.sort(a);            s=String.valueOf(a);            map.put(str, s);        }        while(((str=scan.nextLine()).length())!=0&&!str.equals("XXXXXX")){            char a[]=str.toCharArray();            Arrays.sort(a);            s=String.valueOf(a);            //通过对应的value 查找所有的key            ArrayList arr = valueGetKey(map, s);            if(!arr.isEmpty()) {                 if(arr.size()==1){                     for(int i=0; i<arr.size(); i++) {                            System.out.println(arr.get(i));                          }                 }else{                     Collections.sort(arr);                      for(int i=0; i<arr.size(); i++) {                            System.out.println(arr.get(i));                          }                 }            }else{                System.out.println("NOT A VALID WORD");            }            System.out.println("******");        }    }     private static ArrayList valueGetKey(Map map,String value) {            Set set = map.entrySet();            ArrayList arr = new ArrayList<>();            Iterator it = set.iterator();            while(it.hasNext()) {              Map.Entry entry = (Map.Entry)it.next();              if(entry.getValue().equals(value)) {                String s = (String) entry.getKey();                arr.add(s);              }            }            return arr;          }}