题解HJ27 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int count = in.nextInt();

        List<String> list = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            list.add(in.next());
        }

        String target = in.next();

        int num = Integer.valueOf(in.next());

        int result = 0;
        List<String> resultList = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            if (check(list.get(i), target)) {
                result++;
                resultList.add(list.get(i));
            }
        }

        //字典序排列
        resultList = dicSort(resultList);

        //输出
        System.out.println(result);
        if (result >= num) {
            System.out.println(resultList.get(num - 1));
        }
    }

    //检查是否为兄弟单词
    public static boolean check(String a, String b) {
        char[] chars1 = a.toCharArray();
        char[] chars2 = b.toCharArray();

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

        if (chars1.length == chars2.length && !a.equals(b) &&
                Arrays.equals(chars1, chars2)) {
            return true;
        } else {
            return false;
        }
    }

    //字典序排列
    public static List<String> dicSort(List<String> list) {
        List<String> resultList = list;

        Collections.sort(resultList, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                char[] chars1 = o1.toCharArray();
                char[] chars2 = o2.toCharArray();

                int i = 0;

                while (i < chars1.length && i < chars2.length) {
                    if (chars1[i] != chars2[i]) {
                        return chars1[i] - chars2[i];
                    } else {
                        i++;
                    }
                }

                return chars1.length - chars2.length;
            }
        });

        return resultList;
    }
}

做出来的第一道难题 加油!

全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务