当前位置: 首页 > news >正文

找兄弟单词

描述

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

兄弟单词要求和原来的单词不同。例如: 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         
import java.util.*;
import java.util.stream.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString a = in.nextLine();String[] array = a.split(" ");int len = array.length;int count = Integer.valueOf(array[0]);int index = Integer.valueOf(array[len-1]);String target = array[len-2];String[] l = new String[len-3];for (int i=1; i<len-2; i++) {l[i-1]=array[i];}List<String> set = parseSet(l, target);System.out.println(set.size());if (index < set.size()) {System.out.println(set.toArray()[index-1]);}}}public static List<String> parseSet(String[] array, String target) {List<String> set = new ArrayList<>();String key = sort(target);for (String tmp : array) {String sortT = sort(tmp);if (sortT.equals(key)) {if (!tmp.equals(target)) {set.add(tmp);}}}Collections.sort(set);return set;}public static String sort(String s) {char[] a = s.toCharArray();List<Character> list = new ArrayList<>();for (char ch : a) {list.add(ch);}Collections.sort(list);return list.stream().map(o->o.toString()).collect(Collectors.joining(""));}
}

 

http://www.lryc.cn/news/66353.html

相关文章:

  • python字典翻转教学
  • sentinel 随笔 3-降级处理
  • 如何解决IP能ping通但无法上网的问题?
  • Autosar实践-CANTp
  • Redis简介
  • 报错问题修改
  • 专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?
  • 加速开放计算产业化,OCTC五大原则瞄准需求痛点
  • 【RabbitMQ】安装及六种模式
  • 数据结构刷题(三十一):1049. 最后一块石头的重量 II、完全背包理论、518零钱兑换II
  • opencv_c++学习(四)
  • 基于AT89C51单片机的篮球计时记分设计
  • 并发编程-Day2
  • 第1章 Nginx简介
  • 一个.Net功能强大、易于使用、跨平台开源可视化图表
  • 浅谈 ext2 文件系统的特点、优缺点以及使用场景
  • Map和Set数据结构和ES6模块化语法
  • 10_Uboot启动流程_2
  • python+django汽车4S店零配件保养服务管理系统
  • STM32F4的输出比较极性和PWM1,PWM2的关系
  • 易优cms伪静态,EyouCms去除URL中的index.php
  • 【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型
  • Open3D 非线性最小二乘拟合二维多项式曲线
  • kafka消息队列的两种模式
  • python语法复习
  • 02-Java基础编程
  • 武忠祥老师每日一题||定积分基础训练(十)
  • C/C++趣味程序设计百例(41~50)
  • 论文阅读-2-DeepSMOTE Fusing Deep Learning and SMOTE for Imbalanced Data
  • 三种方法教你让模糊照片秒变高清图