查找兄弟单词

描述

题目描述

知识点 查找
运行时间限制 10M
内存限制 128
输入

先输入字典中单词的个数,再输入n个单词作为字典单词。
输入一个单词,查找其在字典中兄弟单词的个数
再输入数字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;
		}
	}
}

  

原文地址:https://www.cnblogs.com/lxk2010012997/p/5411597.html