如何在华为OD机试中获得满分?Java实现【猜字谜】一文详解!

news/2024/11/27 3:55:12/

请添加图片描述

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

文章目录

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

1、题目描述

小王设计了一人简单的清字谈游戏,游戏的迷面是一人错误的单词,比如nesw,玩家需要猜出谈底库中正确的单词。猜中的要求如·
对于某个谜面和谜底单词,满足下面任一条件都表示猜中:

  1. 变换顺序以后一样的,比如通过变换w和e的顺序,“nwes”跟“news”是可以完全对应的;
  2. 字母去重以后是一样的,比如“woood”和“wood”是一样的,它们去重后都是“wod”请你写一个程序帮忙在谜底库中找到正确的谜底。迷面是多个单词,都需要找到对应的谜底,如果找不到的话,返"not found"。

2、输入描述

1、谜面单词列表,以",“分隔
2、谜底库单词列表,以”,"分隔

3、输出描述

匹配到的正确单词列表,以","分隔;

如果找不到,返回"not found"。

补充说明:

  1. 单词的数量N的范围:0<N<1000
  2. 词汇表的数量M的范围:0<M<1000
  3. 单词的长度P的范围:0<P<20
  4. 输入的字符只有小写英文字母,没有其它字符

4、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);String values = sc.nextLine();String[] arr = values.split(",");values = sc.nextLine();String[] strs = values.split(",");List<byte[]> wordsList = new ArrayList<>();List<String> result = new ArrayList<>();for (String s : strs) {wordsList.add(s.getBytes());}for (String s : arr) {byte[] bytes = s.getBytes();int ok = 0;for (int i = 0; i < wordsList.size(); i++) {byte[] wordChars = wordsList.get(i);int has = 1;for (byte e : bytes) {int found = 0;for (byte w : wordChars) {if (w == e) {found = 1;break;}}if (found == 0) {has = 0;break;}}if (has == 1) {if (!result.contains(strs[i])) {result.add(strs[i]);ok = 1;break;}}}if (ok == 0) {result.add("not found");}}if (result.size() == 0) {System.out.print("not found");} else {for (int i = 0; i < result.size(); i++) {if (i == 0)System.out.print(result.get(i));elseSystem.out.print("," + result.get(i));}}
}

5. 测试

在这里插入图片描述

6.解题思路

  1. 首先,读取输入的迷面单词列表和谜底库单词列表。
  2. 将谜底库单词列表中的每个单词转换为字节数组,并将其存储在一个字节数组列表wordsList中。
  3. 遍历迷面单词列表中的每个单词,对于每个迷面单词,遍历谜底库单词列表中的每个单词。
  4. 将当前迷面单词和谜底库单词转换为字节数组,然后逐个比较字节数组中的字符。
  5. 如果迷面单词的每个字符在谜底库单词中都能找到匹配的字符,说明满足条件,将对应的谜底单词添加到结果列表result中。
  6. 如果遍历完所有谜底库单词后仍未找到匹配的谜底单词,则将"not found"添加到结果列表result中。
  7. 如果结果列表result为空,说明没有找到匹配的谜底单词,输出"not found"。
  8. 否则,将结果列表result中的单词按逗号分隔输出。
    在这里插入图片描述

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

相关文章

C++ 入门导引(这是一篇由GPT4写的文章)

C 应用场景 C 是一种广泛应用的编程语言&#xff0c;拥有多种使用场景。以下是 C 的一些主要应用场景&#xff1a; ​1. 游戏开发&#xff1a;C 常用于游戏开发&#xff0c;尤其是大型 3D 游戏。它可以轻松地与图形 API&#xff08;如 OpenGL 和 DirectX&#xff09;集成&…

SpringBoot项目中controller层、service层、mapper层、entity层、dto层、vo层理解

SpringBoot框架继承了Spring中基本功能&#xff0c;但在项目层级结构上又有些不同&#xff0c;本文着重对SpringBoot项目中后端的基本层级结构做了梳理。 项目的具体开发规范建议学习Java开发手册&#xff08;嵩山版&#xff09;&#xff0c;本文不作一一赘述。 Controller层…

[java]两数之和 II - 输入有序数组

两数之和 II - 输入有序数组 leetcode 167 原题链接解题思路解题代码排序专题 leetcode 167 原题链接 167. 两数之和 II - 输入有序数组 – 原题链接 题目描述: 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出…

【String——简单使用】

文章目录 String1. 字符串定义和初始化2. 字符串基本操作2.1 访问单个字符2.2 修改字符串内容2.3 字符串查找和比较 3. 常用字符串函数3.1 length() 和 size()3.2 empty()3.3 substr()3.4 c_str() 4.字符与整形之间相互转换4.1 char 类型转 int 类型4.2 int 类型转 char 类型4.…

Mysql函数大全

前言 MySQL提供了众多功能强大、方便易用的函数&#xff0c;使用这些函数&#xff0c;可以极大地提高用户对于数据库的管理效率&#xff0c;从而更加灵活地满足不同用户的需求。本文将MySQL的函数分类并汇总&#xff0c;以便以后用到的时候可以随时查看。 数学函数 &#xf…

随机数发生器设计(二)

一、软件随机数发生器组成概述 密码产品应至少包含一个随机比特生成器。 软件随机数发生器应遵循GM/T 0105-2021《软件随机数发生器设计指南》要求&#xff0c;使用SM3或SM4算法作为生成随机比特算法。 本文以SM3算法为例描述软件随机数发生器的一个设计实例。需要注意的是&a…

SpringCloud Alibaba Sentinel

SpringCloud Alibaba Sentinel Sentinel 基础 官网 1 Github: https://github.com/alibaba/Sentinel 2 快速开始: https://sentinelguard.io/zh-cn/docs/quick-start.html 3 中文: https://github.com/alibaba/Sentinel/wiki/介绍 4 使用手册: https://spring-cloud-alib…

如何顺序处理设备上报的数据

1. 引言 随着智能技术的发展&#xff0c;市场上出现了很多的智能设备&#xff0c;其具有连接网络的能力。用户可以实现远程控制&#xff0c;并且设备也可上报自己的状态&#xff0c;实现云端对设备的运行情况分析。在某些情况下需要保证设备上报状态的有序性&#xff0c;例如传…