ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java题目 HJ27 查找兄弟单词

2022-03-08 01:02:00  阅读:208  来源: 互联网

标签:java String s1 bca 单词 兄弟 查找 输入 HJ27


 

描述

定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。 兄弟单词要求和原来的单词不同。例如: ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。 现在给定你 n 个单词,另外再给你一个单词 str ,让你寻找 str 的兄弟单词里,按字典序排列后的第 k 个单词是什么? 注意:字典中可能有重复单词。   数据范围:1 \le n \le 1000 \1≤n≤1000 ,输入的字符串长度满足 1 \le len(str) \le 10 \1≤len(str)≤10  , 1 \le k < n \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 import java.util.*;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5 
 6         Scanner scanner = new Scanner(System.in);
 7 
 8         while (scanner.hasNext()){
 9             //输入拆分为字符串数组
10             String[] s1 = scanner.nextLine().split(" ");
11             //多少个字符串
12             int n = Integer.parseInt(s1[0]);
13             //第x位置的字符串
14             String x = s1[s1.length -2];
15             int k = Integer.parseInt(s1[s1.length-1]);
16             
17             //创建字符串list,判断单词是否兄弟单词,是则添加到list中
18             List<String> ls = new ArrayList<>();
19             for(int i=1; i<=n; i++) {
20                 if(isBrother(x,s1[i])){
21                     ls.add(s1[i]);
22                 }
23             }
24             System.out.println(ls.size());  //输出兄弟单词个数
25             
26             Collections.sort(ls);  //字母排序
27             if(ls.size() >= k) {
28                 System.out.println(ls.get(k - 1));
29             }
30         }
31     }
32     
33     //将x和要比较的单词拆分为字符重新排序后比较
34     public static boolean isBrother(String x, String s) {
35         if(x.length() != s.length() || s.equals(x)) {
36             return false;
37         }
38         char[] cx = x.toCharArray();
39         char[] cs = s.toCharArray();
40         
41         Arrays.sort(cx);
42         Arrays.sort(cs);
43 //         boolean res = String.valueOf(cx).equals(String.valueOf(cs));
44         boolean res = new String(cx).equals(new String(cs));  //String构造方法转换
45         return res;
46     }
47 }

 

标签:java,String,s1,bca,单词,兄弟,查找,输入,HJ27
来源: https://www.cnblogs.com/m6233/p/15978826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有