题目描述
输入描述
先输入字典中单词的个数,再输入n个单词作为字典单词。输入一个单词,查找其在字典中兄弟单词的个数再输入数字n
输出描述
根据输入,输出查找到的兄弟单词的个数
输入例子
3abcbcacababc1
输出例子
2bca
算法实现
import java.util.*;/** * All Rights Reserved !!! */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); Map> map = new HashMap<>(); while (scanner.hasNext()) { map.clear(); int n = scanner.nextInt(); // 构造一个字典 while ((--n) >= 0) { String s = scanner.next(); Key k = new Key(s); if (map.containsKey(k)) { map.get(k).add(s); } else { List list = new ArrayList<>(); list.add(s); map.put(k, list); } } // String s = scanner.next(); // s的第i个兄弟节点 int i = scanner.nextInt(); Key k = new Key(s); List list = map.get(k); if (list != null) { Collections.sort(list); // 删除s while (list.contains(s)) { list.remove(s); } System.out.println(list.size()); int cnt = 0; Iterator itr = list.iterator(); String t = ""; while (cnt < i && itr.hasNext()) { t = itr.next(); if (!t.equals(s)) { cnt++; if (cnt == i) { System.out.println(t); } } } }else { System.out.println(0); } } scanner.close(); } private static class Key { private String s; private String t; private int hashCode; public Key(String s) { this.s = s; if (s == null) { hashCode = 0; } else { char[] chars = s.toCharArray(); Arrays.sort(chars); t = new String(chars); hashCode = t.hashCode(); } } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Key key = (Key) o; return t != null ? t.equals(key.t) : key.t == null; } @Override public int hashCode() { return hashCode; } }}