首页 > 编程语言 >华为OD机试 - 寻找相似单词(Java 代码实现)

华为OD机试 - 寻找相似单词(Java 代码实现)

时间:2023-02-19 16:14:14浏览次数:57  
标签:输出 abc Java OD bca 单词 给定 机试 null

题目描述

给定一个可存储若干单词的字典,找出指定单词的所有相似单词,并且按照单词名称从小到大排序输出。

单词仅包括字母,但可能大小写并存(大写不一定只出现在首字母)。

相似单词说明:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的相似单词,如abc、bca即为相似单词(大小写是不同的字母,如a和A算两个不同字母)。

字典序排序: 大写字母<小写字母。同样大小写的字母,遵循26字母顺序大小关系。

A<B<C<…<X<Y<Z<a<b<c<…<x<y<z. 如Bac<aBc<acB<cBa.

 

输入描述

第一行为给定的单词个数N(N为非负整数)

从第二行到地N+1行是具体的单词(每行一个单词)

最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词)

 

输出描述

从给定的单词组中,找出指定单词的相似单词,并且按照从小到大字典序排列输出,中间以空格隔开

如果不存在,则输出null(字符串null)

 

用例

输入 4
abc
dasd
tad
bca
abc
输出 abc bca
说明 在给定的输入种,与abc是兄弟单词的是abc bca,且输出按照字典序大小排序,输出的所有单词以空格隔开
输入 4
abc
dasd
tad
bca
abd
输出 null
说明 给定的单词组中,没有与给定单词abd是兄弟单词,输出为null(字符串null)

题目解析

简单的排序题,逻辑请看代码。

 

Java算法源码

package quicktest;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.StringJoiner;

/**
 * @Author: liliangxing
 * private code share in https://gitee.com/liliangxing/
 * public code share in https://github.com/liliangxing/
 * @Description: 给定一个可存储若干单词的字典,找出指定单词的所有相似单词,并且按照单词名称从小到大排序输出。
 * <p>
 * 单词仅包括字母,但可能大小写并存(大写不一定只出现在首字母)。
 * <p>
 * 相似单词说明:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的相似单词,如abc、bca即为相似单词(大小写是不同的字母,如a和A算两个不同字母)。
 * <p>
 * 字典序排序: 大写字母<小写字母。同样大小写的字母,遵循26字母顺序大小关系。
 * <p>
 * 即A<B<C<…<X<Y<Z<a<b<c<…<x<y<z. 如Bac<aBc<acB<cBa.
 * <p>
 * 输入描述
 * 第一行为给定的单词个数N(N为非负整数)
 * <p>
 * 从第二行到地N+1行是具体的单词(每行一个单词)
 * <p>
 * 最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词)
 * <p>
 * 输出描述
 * 从给定的单词组中,找出指定单词的相似单词,并且按照从小到大字典序排列输出,中间以空格隔开
 * <p>
 * 如果不存在,则输出null(字符串null)
 * <p>
 * 用例
 * 输入    4
 * abc
 * dasd
 * tad
 * bca
 * abc
 * 输出    abc bca
 * 说明    在给定的输入种,与abc是兄弟单词的是abc bca,且输出按照字典序大小排序,输出的所有单词以空格隔开
 * 输入    4
 * abc
 * dasd
 * tad
 * bca
 * abd
 * 输出    null
 * 说明    给定的单词组中,没有与给定单词abd是兄弟单词,输出为null(字符串null)
 * <p>
 * Bac
 * acB
 * cBa
 * aBc
 */
public class Details128600839_a {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        List<String> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(scanner.next());
        }
        List<String> result = new ArrayList<>();
        String sample = scanner.next();
        findSimilar(list, sample, result);
        sort(result);
        System.out.println(result.isEmpty() ? null : String.join(" ", result));
    }

    private static void sort(List<String> result) {
        Collections.sort(result);
    }

    private static void findSimilar(List<String> list, String sample, List<String> result) {
        char[] sampleChars = sample.toCharArray();
        for (String checkStr : list) {
            if (checkStr.length() != sample.length()) {
                continue;
            }
            boolean similarFlag = true;
            for (char sampleChar : sampleChars) {
                if (checkStr.indexOf(sampleChar) == -1) {
                    similarFlag = false;
                    break;
                }
            }
            if (similarFlag) {
                result.add(checkStr);
            }
        }
    }
}

 

标签:输出,abc,Java,OD,bca,单词,给定,机试,null
From: https://www.cnblogs.com/liliangxing/p/17134897.html

相关文章

  • java中用递归实现树形结构
    本文以一个多级菜单的案列描述了在java中如何用递归来组装树形结构的数据。java中生成树形结构主要分为两步,(1)在源数据list中找到所有的根节点(2)递归为每一个根节......
  • Java 接口
    目录1、接口的概念2、接口的定义3、接口的使用4、接口和抽象类1、接口的概念类是一种具体的实现体,而接口定义了一种规范(抽象方法),接口定义了某一批类所需要遵循的规范,接口......
  • Java 内部类
    目录1、初识内部类2、非静态内部类(实例内部类)3、静态内部类(重点)4、内部类的使用5、局部内部类6、匿名内部类1、初识内部类如果一个事物的内部包含另一个事物,那么这是一个......
  • Golang基础-Structs与Methods
    将struct定义为一种类型CarNewCar函数return&Car{},返回指针//car.gopackageelon//Carimplementsaremotecontrolledcar.typeCarstruct{ speed......
  • Codeforces Round #844:C. Equal Frequencies
    一、来源:Problem-C-Codeforces二、题面三、思路先考虑一个子问题模型:我们现在有用\(m_1\)种随机字母组成的n个数,各字母个数未定,现在需要使这n个数变为\(m_2\)......
  • 版本不兼容(NoSuchMethodError: com.baomidou.mybatisplus.core.toolkit.StringUtils.i
    "C:\ProgramFiles\Java\jdk1.8.0_221\bin\java.exe"-XX:TieredStopAtLevel=1-noverify-Dspring.output.ansi.enabled=always-Dcom.sun.management.jmxremote-Dsprin......
  • MongoDB简介与应用场景、Docker安装Mongo、整合SpringBoot实现CRUD
    (目录)1MongoDB相关概念1.1业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:•Hi......
  • 61-CICD持续集成工具-Jenkins自动化部署JAVA程序
    BlueOcean插件实现可视化注意:安装完插件,需要重启Jenkins才能生效参数化构建执行命令脚本[root@jenkinsscript]#catwheel-deploy-rollback.sh#!/bin/bash##*********......
  • Kepserver和codesys设备间的OPC通信
    1,在CODESYS中,新建了个工程,同时添加了<符号配置>对象  一定要将支持OPCUA特征选上,在这儿我同时将XML的这个也选上了,因为我后期需要做其他的一些东西   ......
  • Atcoder题解:Arc156_c
    数据范围\(10^5\),但是介绍一个\(O(n\logn)\)做法。我们考虑观察样例,发现样例都很小,而且\(\text{LCS}\)的长度都是\(1\),那么我们就猜答案最多为\(1\),并尝试去构造......