欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客网华为机试【查找兄弟单词】

程序员文章站 2024-03-11 22:07:19
...

题目描述

牛客网华为机试【查找兄弟单词】
牛客网华为机试【查找兄弟单词】
牛客网华为机试【查找兄弟单词】

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

输出描述:
根据输入,输出查找到的兄弟单词的个数

示例
输入

3 abc bca cab abc 1

输出

2
bca

题目分析

这道题,光审题,我就花了好长时间!!
题目描述极为混乱!
而且输出的结果,有一个坑!(结果要进行判断,有还是没有兄弟单词,没有就不输出!结果是2行数据)

现在,我们来分析一下,首先,题目要求输入 3 abc bca cab abc 1 ,其中3表示后边会跟着输入 3 个单词,而这3个单词需要存进字典。也就是 abc bca cab 这 3 个单词。

紧接着第 4 个单词 abc,是第二阶段了。这个单词表示是要查找的单词。需要从 字典排序后的兄弟单词列表查找。最后的那个数字,是兄弟单词列表的一个序号,你可以理解为 List 的下标 + 1(因为List 的下标从0开始,而这个数字从 1 开始)。

我的解决方案是:
创建一个 List 作为兄弟单词列表,然后从将输入的那个字符串按照空格切分,遍历并判断是不是兄弟单词,是就存进列表。

然后,对兄弟单词列表进行排序(字典顺序,即字符串默认的排序方式)。

最终打印结果。

java 代码

import java.util.*;

/**
 * Created by Feng on 2020/2/18 14:23
 * CurrentProject's name is java8
 * 查找兄弟单词
 */
public class Main {
     /**
     * 是兄弟单词
     * @param str1 单词1
     * @param str2 单词2
     * @return 是兄弟就返回 true
     */
    private static boolean isBrother(String str1, String str2){
        char[] chars1 = str1.toCharArray();
        char[] chars2 = str2.toCharArray();

        Arrays.sort(chars1);
        Arrays.sort(chars2);

        return new String(chars1).equals(new String(chars2)) && !str1.equals(str2);
    }


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(input.hasNextLine()){
            String line = input.nextLine();
            String[] words = line.split(" ");

            // 要查的单词
            String item = words[words.length - 2];
            // 兄弟单词列表
            List<String> list = new ArrayList<>();
            for (int i = 1; i < words.length - 2; i++) {
                if(isBrother(words[i], item)){
                    list.add(words[i]);
                }
            }

            // 排序:字典顺序
            list.sort(String::compareTo);
            // 兄弟单词的个数
            System.out.println(list.size());
            int index = Integer.parseInt(words[words.length - 1]);
            // 需要判断
            if(!list.isEmpty() && index <= list.size()){
                System.out.println(list.get(index - 1));
            }
        }
    }
    
}

结果

牛客网华为机试【查找兄弟单词】

相关标签: 牛客网华为机试