华为OD机试 Java 实现【查找兄弟单词】【牛客练习题 HJ27】,附详细解题思路

news/2024/11/29 8:34:54/

在这里插入图片描述

一、题目描述

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

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

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

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

二、输入描述

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

三、输出描述

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

四、解题思路

  1. 读取输入的字典单词个数 n;
  2. 创建一个 List 对象 datas,用于存储字典单词;
  3. 遍历输入,依次读取每个字典单词,并将其添加到 datas 列表中;
  4. 读取输入的单词x;
  5. 将单词x转换为字符数组 xs;
  6. 读取输入的整数k;
  7. 对 datas 列表进行字典序排序;
  8. 创建一个计数器变量 count 并初始化为0,用于统计满足条件的兄弟单词个数;
  9. 创建一个字符串变量 k,用于存储按字典序排序后的第k个兄弟单词;
  10. 遍历 datas 列表中的每个单词,对每个单词进行如下操作:
    • 如果当前单词与x相同,或者长度不同,跳过当前单词;
    • 将当前单词转换为字符数组 strs;
    • 对 xs 和 strs 数组进行升序排序;
    • 如果 strs 数组与 xs 数组不相等,跳过当前单词;
    • 将 count 加1,表示找到一个满足条件的兄弟单词;
    • 如果 count 等于k,将当前单词赋值给 k;
  11. 输出 count 表示满足条件的兄弟单词个数;
  12. 输出 k 表示按字典序排序后的第k个兄弟单词;

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int num = sc.nextInt();List<String> datas = new ArrayList();for (int i = 0; i < num; i++) {datas.add(sc.next());}String x = sc.next();char[] xs = x.toCharArray();//取反int index = sc.nextInt();Collections.sort(datas);int count = 0;String k = "";for (String str : datas) {if (x.equals(str) || x.length() != str.length()) {continue; //字符串一样 和 长度不一样的跳过}char[] strs = str.toCharArray();Arrays.sort(xs);Arrays.sort(strs);if (!Arrays.equals(strs, xs)) {continue;//升序排序不相等,跳过}count += 1; // 满足条件的累加if (count == index) {k = str;//第K个兄弟单词}}System.out.println(count);System.out.println(k);}
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/246554.html

相关文章

Q~Q

换了个个人博客&#xff0c;以后这个应该很少用了&#xff0c;欢迎大家来我新博客&#xff08;www.wakaka99.top)来玩。

网络通信(QQ)

服务器 用户 package qq.QQServer.qqcommon;import java.io.Serializable;/* 表示一个用户信息*/ public class User implements Serializable {private static final long serialVersionUID 1L;private String userId;//用户Idprivate String passwd;//用户密码public User…

Q:

在a文件中改变C文件的IP&#xff0c;b文件的url也会发生变化 背景&#xff1a; 之前url是固定的&#xff0c;只需要向一台服务器发送请求&#xff0c;现在需要向不同的服务器发送请求。在a文件确定到底往那个服务器发送请求a.py def test_API(self):IP "11" # 改变…

猛Q

http://blog.csdn.net/Raptor

QNetwork

Tcp/IP TCP/IP是一套用于网络通信的协议集合或者系统 TCP/IP体系&#xff1a; TCP报文格式&#xff1a; 三次握手连接TCP 四次挥手断开TCP QHostAddress 枚举类型含义QHostAddress::Null空地址对象&#xff0c;相当于QHostAddress()QHostAddress::BroadcastIPv4广播地…

腾讯Tencent

1、一个商场进行一场抽奖活动&#xff0c;其中有两个奖项&#xff0c;第一个奖项A抽中的概率是1/6&#xff0c;第二个奖项B抽中的概率是5/6&#xff1b;用C语言编码实现这个抽奖程序。 题目通过一个XML文档给出。 生成一个真随机数。 随机数对6取余&#xff0c;得到的余数一定…