描述 |
题目描述 |
---|---|
知识点 | 查找 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 |
先输入字典中单词的个数,再输入n个单词作为字典单词。 |
输出 |
根据输入,输出查找到的兄弟单词的个数 输出指定的第n个兄弟单词 |
样例输入 | 3 abc bca cab abc 1 |
样例输出 | 2 bca |
package com.oj5; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; public class Oj { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); in.nextLine(); String[] data = new String[num]; for(int i = 0;i < num; i++) data[i] = in.nextLine(); String input = in.nextLine(); int inputNum = in.nextInt(); int count = 0; Set<String> set = new TreeSet<String>(); for(int i = 0;i < num; i++) if(isBrother(data[i],input)){ count++; set.add(data[i]); } System.out.println(count); Iterator<String> iter = set.iterator(); int k = 0; while(iter.hasNext()){ k++; String value = iter.next(); if(k==inputNum) System.out.println(value); } } private static boolean isBrother(String src, String input) { //System.out.println("src: "+src+" "+input); if(src.equals(input)) return false; else if(src.length()!=input.length()){ return false; }else{ Map<Character,Integer> mapSrc = new TreeMap<Character,Integer>(); Map<Character,Integer> mapInput = new TreeMap<Character,Integer>(); for(int i = 0;i < src.length(); i++) if(mapSrc.containsKey(src.charAt(i))){ mapSrc.put(src.charAt(i),1+mapSrc.get(src.charAt(i))); }else{ mapSrc.put(src.charAt(i), 1); } for(int i = 0;i < input.length(); i++) if(mapInput.containsKey(input.charAt(i))){ mapInput.put(input.charAt(i), 1+mapInput.get(input.charAt(i))); }else{ mapInput.put(input.charAt(i), 1); } //System.out.println("hi1: "+src); for(Map.Entry<Character, Integer> srcEntry:mapSrc.entrySet()){ Character key = srcEntry.getKey(); int value2; try{ value2 = mapInput.get(key); }catch(Exception e){ return false; } if(value2!=srcEntry.getValue()) return false; } //System.out.println("hi2: "+src); for(Map.Entry<Character, Integer> inputEntry:mapInput.entrySet()){ Character key2 = inputEntry.getKey(); int value; try{ value = mapSrc.get(key2); }catch(Exception e){ return false; } //System.out.println(key2+" "+value); if(value!=inputEntry.getValue()) return false; } //System.out.println("hi3: "+src); return true; } } }