如何在华为OD机试中获得满分?Java实现【寻找相似单词】一文详解!

news2024/11/24 11:34:05

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
    • 2. 输入描述
    • 3. 输出描述
    • 4. Java算法源码
    • 5. 测试
    • 6.解题思路

1. 题目描述

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

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

相似单词说明:
给定一个单词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。

2. 输入描述

第一行为给定的单词个数N(N为非负整数);
从第二行到第N+1行是具体的单词(每行一个单词);
最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词)

3. 输出描述

从给定的单词组中,找出指定单词的相似单词,并且按照从小到大字典序排列输出,中间以空格隔开;
如果不存在,则输出null(字符串null)。

4. Java算法源码

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String[] words = new String[n];
        for (int i = 0; i < n; i++) {
            words[i] = scanner.next();
        }
        String targetWord = scanner.next();
        List<String> similarWords = findSimilarWords(words, targetWord);
        if (similarWords.isEmpty()) {
            System.out.println("null");
        } else {
            Collections.sort(similarWords);
            System.out.println(String.join(" ", similarWords));
        }
    }

    private static List<String> findSimilarWords(String[] words, String targetWord) {
        List<String> similarWords = new ArrayList<>();
        for (String word : words) {
            if (isSimilar(word, targetWord)) {
                similarWords.add(word);
            }
        }
        return similarWords;
    }

    private static boolean isSimilar(String word1, String word2) {
        if (word1.length() != word2.length()) {
            return false;
        }
        int[] count1 = new int[26];
        int[] count2 = new int[26];
        for (int i = 0; i < word1.length(); i++) {
            char c1 = word1.charAt(i);
            char c2 = word2.charAt(i);
            if (c1 >= 'A' && c1 <= 'Z') {
                count1[c1 - 'A']++;
            } else {
                count1[c1 - 'a']++;
            }
            if (c2 >= 'A' && c2 <= 'Z') {
                count2[c2 - 'A']++;
            } else {
                count2[c2 - 'a']++;
            }
        }
        for (int i = 0; i < 26; i++) {
            if (count1[i] != count2[i]) {
                return false;
            }
        }
        return true;
    }

5. 测试

在这里插入图片描述

6.解题思路

在这里插入图片描述

  1. 读取输入的单词个数 N
  2. 创建一个长度为 N 的字符串数组 words,并读取输入的单词。
  3. 读取输入的待检测单词 targetWord
  4. 创建一个空的字符串列表 similarWords 用于存储相似单词。
  5. 调用 findSimilarWords 方法,传入单词数组 words 和待检测单词 targetWord,获取相似单词列表 similarWords
  6. 如果 similarWords 列表为空,输出字符串 “null”。
  7. 否则,对 similarWords 列表进行字典序排序。
  8. 使用字符串连接方法将 similarWords 列表中的相似单词按空格连接成一个字符串,并输出。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[已解决] 决定系数R2为何为负 from sklearn.metrics import r2_score

最近在炼丹发现一件很有趣的现象&#xff0c;决定系数R2竟然为负&#xff0c;小学生都知道任何一个常数的平方绝不可能为负&#xff0c;潜意识里告诉我这里面必有蹊跷&#xff0c;因此查阅许多资料得知&#xff0c;决定系数R2不是r相关系数的平方这么简单&#xff0c;实际上当非…

加密后的敏感字段还能进行模糊查询吗?该如何实现?

前言 有一个问题不知道大家想过没&#xff1f;敏感字段数据是加密存储在数据库的表中&#xff0c;如果需要对这些敏感字段进行模模糊查询&#xff0c;还用原来的通过sql的where从句的like来模糊查询的方式肯定是不行的&#xff0c;那么应该怎么实现呢&#xff1f;这篇文章就来…

zigbee 串行通信

串口通信需要三个函数 // Initialize UART at the startup //------------------------------------------------------------------- void halUartInit(uint32 baud);//------------------------------------------------------------------- // Read a buffer from the UART …

MySQL 的锁

目录 一、锁的分类 二、全局锁、表级锁、页级锁、行级锁 三、乐观锁和悲观锁 四、共享锁和排它锁 五、意向共享锁和意向排它锁 六、间隙锁、临键锁、记录锁 锁的分类和用途 一、锁的分类 1、MySQL锁可以按模式分类为&#xff1a; 乐观锁悲观锁。 2、按粒度分可以分为&a…

【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第三章——MindSpore云上调试调优

1.ModelArts云上调试调优 ModelArts密钥初始化 详细教程&#xff1a; 初始化OBS服务 创建训练作业 2.MindSpore IDE插件效率提升 通过智能代码块推荐、代码自动补全等特性&#xff0c;提升MindSpore脚本开发效率&#xff0c;对接ModelArts云服务&#xff0c;实现模型训…

龙芯2K1000实战开发-时钟设计

文章目录 概要整体架构流程技术名词解释技术细节小结概要 提示:这里可以添加技术概要 本文主要结合项目方案,结合相应外设需求,设计单板时钟方案 整体架构流程 提示:这里可以添加技术整体架构 整体单板时钟方案,分为两部分。 一部分是:以CPU为核心,包括自身一些控…

VR全景智慧城市:构筑未来城市的数字化大融合

引言&#xff1a; 现代城市正处于数字化时代的浪潮之中&#xff0c;而在这个数字化浪潮中&#xff0c;VR全景智慧城市正以令人瞩目的方式崭露头角。随着虚拟现实&#xff08;VR&#xff09;技术的不断进步和智慧城市的发展需求&#xff0c;VR全景智慧城市作为数字技术与城市发展…

openGauss Developer Day 2023 | 邀您参加海量数据分论坛

尊敬的数据库开发者 &#xff1a; 海量数据 已为您备好一封通往数智时代的邀请函&#xff0c;请您于 5月26日 前往北京昆泰嘉瑞文化中心&#xff0c;赶赴 openGauss Developer Day 2023 的盛大约定。 本次专场活动中&#xff0c;海量数据将会轮番为您展示最核心的技术…

chatgpt赋能python:Python二次方的表示方法及其应用

Python 二次方的表示方法及其应用 介绍 Python是一种优雅、简洁、易学的编程语言&#xff0c;很多程序员选择使用Python开发各种应用。在计算机科学中&#xff0c;二次方&#xff08;也称为平方&#xff09;非常常见。在Python中&#xff0c;我们有多种方法来表示二次方。 平…

C Primer Plus第六章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.编写一个程序&#xff0c;创建一个包…

中小企业如何差异化“生意表达”,成为最了不起的小企业?

​如今的市场已经不是几十年前随便卖一点新鲜的玩意儿就能火爆的场景了。科技发达了&#xff0c;人们的眼界也开阔了&#xff0c;各式各样,琳琅满目的商品占据了市场空间&#xff0c;生意越来越饱满。 竞争趋势激烈&#xff0c;商品同质化现象严重。一些商家企业通过压低价格的…

docker入门(1)----服务/镜像/容器相关命令

安装 官网安装app命令行安装&#xff08;但是没有图形界面app&#xff09;brew install docker 架构 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像ubuntu:16.04 就包含了…

深度学习笔记之循环神经网络(七)反向传播角度观察LSTM

深度学习笔记之循环神经网络——反向传播角度观察LSTM 引言回顾加补充&#xff1a;通过时间反向传播 LSTM \text{LSTM} LSTM的反向传播过程场景构建示例&#xff1a;求解梯度 L ( T ) ∂ W X ⇒ F \begin{aligned}\frac{\mathcal L^{(\mathcal T)}}{\partial \mathcal W_{\math…

2023年第十五届B题电工杯初步解题思路

第十五届“中国电机工程学会杯”全国大学生 电工数学建模竞赛题目 B题 人工智能对大学生学习影响的评价 人工智能简称AI&#xff0c;最初由麦卡锡、明斯基等科学家于1956年在美国达特茅斯学院开会研讨时提出。 2016年&#xff0c;人工智能AlphaGo 4:1战胜韩国围棋高手李世石…

javaWeb 兼职管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh兼职管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…

服务器被勒索病毒攻击怎么办,如何进行勒索病毒解密与预防工作?

在当今社会中服务器已经成为企业关键数据存储和传输的重要载体&#xff0c;同样也成为黑客攻击和勒索病毒的首要目标。一旦服务器被勒索病毒攻击&#xff0c;企业的正常运转与经济利益和核心数据都将受到威胁。下面将为大家介绍一下服务器被勒索病毒攻击后应该采取怎样的措施及…

【1091. 二进制矩阵中的最短路径】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个 n x n 的二进制矩阵 grid 中&#xff0c;返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径&#xff0c;返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格&#xff08;即&…

【参考设计】16芯串联电池包储能系统

电池包的应用与技术问题 为了获得更大的能量密度&#xff0c;锂离子和磷酸铁锂电池在电池包中的使用越来越多&#xff0c;比如&#xff1a;电信机房的UPS单元&#xff0c;移动式电站&#xff0c;储能系统等。 锂离子和磷酸铁锂电池在提供更高的功率和能量密度的同时也需要更准…

Android深入源码分析事件分发机制流程

前言 对于Android中的触摸事件即指手指触摸到屏幕时产生的点击事件&#xff1b; 类型如下&#xff1a; MotionEvent.ACTION_DOWNMotionEvent.ACTION_UPMotionEvent.ACTION_MOVEMotionEvent.ACTION_CANCEL Android事件处理流程 主要涉及三个流程&#xff1a;事件采集、事件中…

电子水尺的应用

品概述 本产品是一种采用微处理器芯片为控制器&#xff0c;内置通讯电路的数字式水位传感器&#xff0c;具备高的可靠性及抗干扰性能。适用于江、河、湖、水库及蓄水池、水渠等处的水位测量使用。 本产品使用不锈钢材料做壳体防护材料&#xff0c;内部用高性能的密封材料进行处…