华为OJ——查找兄弟单词

来源:互联网 发布:单片机编程要学什么 编辑:程序博客网 时间:2024/05/22 13:55

这里写图片描述

这里写图片描述

这里写图片描述

输入描述:

先输入字典中单词的个数n,再输入n个单词作为字典单词。
再输入一个单词,查找其在字典中兄弟单词的个数m
再输入数字k

输出描述:

根据输入,输出查找到的兄弟单词的个数m
然后输出查找到的兄弟单词的第k个单词。

思路:

主要通过将两个字符串进行转换为数组类型,然后对两个数组进行自然排序(Arrays.sort()),进而判断两个数组是否相等(Arrays.equals(x,y)), 来得出是否是兄弟数组。

代码

package cn.c_shuang.demo27;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.Scanner;/** * 查找兄弟单词 * @author Cshuang * */public class Main {    public static void main(String[] args) {        Scanner in=new Scanner(System.in);        while(in.hasNext()){            int cnt=in.nextInt();            String[] s=new String[cnt];            List<String>list=new ArrayList<String>();            for (int i = 0; i < cnt; i++) {                s[i]=in.next();            }            String key=in.next();            for (int i = 0; i < cnt; i++) {                if(check(key,s[i])){                    list.add(s[i]);                }            }            System.out.println(list.size());            Collections.sort(list);//将list集合默认自然排序            int num=in.nextInt();            if(num<=list.size()){                System.out.println(list.get(num-1));            }        }        in.close();    }    public static boolean check(String key, String str) {        if(key.length()!=str.length()||key.equals(str))            return false;        char[] keyChar=key.toCharArray();//将字符串转换为数组        char[] strChar=str.toCharArray();        Arrays.sort(keyChar);//将该字符数组默认自然排序        Arrays.sort(strChar);        return Arrays.equals(keyChar,strChar);//比较两个字符数组是否相等    }}
原创粉丝点击