• 查找兄弟单词


    描述

    题目描述

    知识点 查找
    运行时间限制 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;
    		}
    	}
    }
    

      

  • 相关阅读:
    解释一下什么是servlet?
    HTTP请求的GET与POST方式的区别
    金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出?
    Java中的异常处理机制的简单原理和应用。
    error和exception有什么区别?
    运行时异常与一般异常有何异同?
    jsp有哪些动作?作用分别是什么?
    jsp有哪些内置对象?作用分别是什么? 分别有什么方法?
    一个纸杯的测试用例
    白盒测试黑盒测试区别
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/5411597.html
Copyright © 2020-2023  润新知