Bootstrap

HJ27 查找兄弟单词

示例1

输入:

3 abc bca cab abc 1

输出:

2
bca

示例2

输入:

3 a aa aaa a 1

输出:

0

代码题解:

import java.util.*; // 导入Java的实用工具包,包括集合框架、输入输出等
public class Main {
    public static void main(String[] args) {
        // 创建Scanner对象用于读取标准输入
        Scanner scanner = new Scanner(System.in);

        // 循环读取输入直到没有更多数据
        while (scanner.hasNext()) {
            // 读取一行输入并按空格分割成字符串数组
            String[] ss = scanner.nextLine().split(" ");
            // 第一个元素转换为整数,表示后续单词的数量
            Integer a = Integer.parseInt(ss[0]);
            // 倒数第二个元素作为目标单词
            String x = ss[ss.length - 2];
            // 最后一个元素转换为整数,表示需要找到的第k个兄弟单词
            Integer k = Integer.parseInt(ss[ss.length - 1]);
            // 创建一个列表用于存储兄弟单词
            List<String> list = new ArrayList<>();

            // 遍历所有单词,检查是否为目标单词的兄弟单词
            for (int i = 1; i <= a ; i++) {
                if (isBrother(x, ss[i])) {
                    list.add(ss[i]); // 如果是兄弟单词,添加到列表中
                }
            }
            // 获取兄弟单词的数量
            int size = list.size();
            // 输出兄弟单词的数量
            System.out.println(size);
            // 如果兄弟单词数量大于等于k,则进行排序并输出第k个兄弟单词
            if (size >= k) {
                Collections.sort(list); // 对兄弟单词列表进行字典序排序
                System.out.println(list.get(k -
                                            1)); // 输出第k个兄弟单词(注意索引从0开始)
            }
        }
    }

    /**
     * 判断两个单词是否是兄弟单词
     * @param x 第一个单词
     * @param y 第二个单词
     * @return 如果两个单词是兄弟单词返回true,否则返回false
     */
    public static boolean isBrother(String x, String y) {
        // 如果两个单词长度不同或相同,则不是兄弟单词
        if (x.length() != y.length() || y.equals(x)) {
            return false;
        }
        // 将两个单词转换为字符数组并排序
        char[] s = x.toCharArray();
        char[] j = y.toCharArray();
        Arrays.sort(s);
        Arrays.sort(j);
        // 如果排序后的字符数组相等,则两个单词是兄弟单词
        return new String(s).equals(new String(j));
    }
}

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;