华为机考HJ27题解 | #查找兄弟单词#

查找兄弟单词

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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] w = in.nextLine().split(" ");
        int n=Integer.parseInt(w[0]);
        String x=w[w.length-2];//注意最好用长度
        int index=Integer.parseInt(w[w.length-1]);//
        List<String> lips=new ArrayList<>();
        for(int i=1;i<=n;i++){//注意小于n
            if(matchX(w[i],x)){//如果匹配
                lips.add(w[i]);
            }
        }
        System.out.println(lips.size());
        if(lips.size()>=index){//注意题目隐晦的告知要按顺序的第k个
            Collections.sort(lips);
            System.out.println(lips.get(index-1));
        }
    }
    private static boolean matchX(String a,String x){
        //获取x的长度
        int xLen=x.length();
        //长度
        if(a.length()!=xLen||a.equals(x)){
            return false;
        }
        char[] ach=a.toCharArray();
        char[] xch=x.toCharArray();
        Arrays.sort(ach);
        Arrays.sort(xch);
        return new String(ach).equals(new String(xch));
    }
}

题目描述

定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。

兄弟单词要求和原来的单词不同。例如: ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。

现在给定你 n 个单词,另外再给你一个单词 x ,让你寻找 x 的兄弟单词里,按字典序排列后的第 k 个单词是什么?

注意:字典中可能有重复单词。

数据范围:

1≤𝑛≤1000 1≤n≤1000 

,输入的字符串长度满足

 

1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤10 1≤len(str)≤10 

 

 

1≤𝑘<𝑛 1≤k<n 

输入描述:

输入只有一行。 先输入字典中单词的个数n,再输入n个单词作为字典单词。 然后输入一个单词x 最后后输入一个整数k

输出描述:

第一行输出查找到x的兄弟单词的个数m 第二行输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。

示例1

输入:

3 abc bca cab abc 1

输出:

2
bca

示例2

输入:

6 cab ad abcd cba abc bca abc 1

输出:

3
bca

说明:

abc的兄弟单词有cab cba bca,所以输出3
经字典序排列后,变为bca cab cba,所以第1个字典序兄弟单词为bca     

解题要点:

1 数组的index尽可能用size-n处理,避免越界问题

2 题目隐晦的提示了 需要将兄弟队列进行排序

3 两个字符串是否含有相同元素可以通过重组比较进行确认

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务