华为OD机试真题 Java 实现【字母组合】【2023Q1 200分】

news2025/1/5 9:17:50

在这里插入图片描述

一、题目描述

每个数字对应多个字母,对应关系如下:

0:a,b,c 1:d,e,f 2:g,h,i 3:j,k,l 4:m,n,o 5:p,q,r 6:s,t 7:u,v 8:w,x 9:y, z

输入一串数字后,通过数字和字母的对应关系可以得到多个字母字符串(要求按照数字的顺序组合字母字符串);

屏蔽字符: 屏蔽字符中的所有字母不能同时在输出的字符串出现,如屏蔽字符时abc,则要求字符串中不能同时出现a,b,c,但是允许同时出现a,b;a,c;b,c等;

给定一个数字字符串和一个屏蔽字符串,输出所有可能的字符组合;

例如:

输入数字字符串78和屏蔽字符串ux,输出结果为uw,vw,vx;

数字字符串78,可以得到如下字符串: uw,ux,vw,vx;由于ux是屏蔽字符串,因此排除ux,最终的输出时uw,vw,vx;

二、输入描述

第一行输入为一串数字字符串,数字字符串中的数字不允许重复,数字字符串的长度大于0,小于等于5;
第二行输入是屏蔽字符,屏蔽字符的长度一定小于数字字符串的长度,屏蔽字符串中字符不会重复。

三、输出描述

输出可能的字符串组合。

注:字符串之间使用逗号隔开,最后一个字符串后携带逗号

四、Java算法源码

/**
 * 78
 * ux
 */
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    // 数字字符串
    String numbers = in.nextLine();
    // 屏蔽字符串
    String noStr = in.nextLine();

    List<String> list = new ArrayList<String>();
    // 数字对应的字母组合
    String[] arr = new String[numbers.length()];
    for (int i = 0; i < numbers.length(); i++) {
        // 单个数字
        int number = Integer.valueOf(numbers.charAt(i)+"");
        // 数字对应的字母组合
        arr[i] = hashMap.get(number);
    }

    int index = 0;
    LinkedList<Character> charLine = new LinkedList<>();
    solution(arr, index, list, charLine, noStr);
    for (int i = 0; i < list.size(); i++) {
        System.out.print(list.get(i) + ",");
    }
}

/**
 *
 * @param arr 数字对应的字母组合
 * @param index 第几个字母
 * @param list 不包含屏蔽字符串的字符串集合
 * @param charLine 合格的字母集合
 * @param noStr 屏蔽字符串
 */
public static void solution(String[] arr, int index, List<String> list, LinkedList<Character> charLine, String noStr) {
    if (index == arr.length) {
        StringBuilder builder = new StringBuilder();
        for (Character c : charLine) {
            builder.append(c);
        }

        // 屏蔽字符中的所有字母不能同时在输出的字符串出现
        if (isContainsNoStr(builder.toString(), noStr)) {
            list.add(builder.toString());
        }
        return;
    }

    for (int i = 0; i < arr[index].length(); i++) {
        charLine.addLast(arr[index].charAt(i));
        solution(arr, index + 1, list, charLine, noStr);
        charLine.removeLast();
    }
}

/**
 * 是否包含屏蔽字符串
 *
 * 屏蔽字符中的所有字母不能同时在输出的字符串出现
 */
public static boolean isContainsNoStr(String s, String noStr) {
    boolean flag = false;
    // 要求按照数字的顺序组合字母字符串
    for (int i = 0; i < noStr.length(); i++) {
        if (!s.contains(noStr.charAt(i) + "")) {
            flag = true;
            break;
        }
    }
    return flag;
}

/**
 * 每个数字对应多个字母
 */
private static Map<Integer, String> hashMap = new HashMap<Integer, String>();

static {
    hashMap.put(0, "abc");
    hashMap.put(1, "def");
    hashMap.put(2, "ghi");
    hashMap.put(3, "jkl");
    hashMap.put(4, "mno");
    hashMap.put(5, "pqr");
    hashMap.put(6, "st");
    hashMap.put(7, "uv");
    hashMap.put(8, "wx");
    hashMap.put(9, "yz");
}

五、效果展示

1、输入

78
ux

2、输出

uw,vw,vx,

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【服务中心选址】【2023Q1 100分 】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

PostGIS的10个最佳实践

PostGIS 是一个功能强大的开源空间数据库&#xff0c;可用于存储、查询和分析地理空间数据。 对于需要存储和分析大量地理空间数据的组织来说&#xff0c;这是一个流行的选择。 但是&#xff0c;正确使用 PostGIS 以充分利用它很重要。 在本文中&#xff0c;我们将讨论 10 个 …

Mit6.006-lecture09-Breadth-First-Search

一、新单元&#xff1a;图 Quiz 1包含lecture01到lecture08&#xff0c;关注数据结构和排序 今天开始新单元&#xff0c;lecture09-lecture14&#xff0c;关注图算法 二、图应用 图无处不在 任何网络系统都存在有向连接图 比如&#xff1a;路网、计算机网络、社交网络 任…

1146 Topological Order(31行代码+详细注释)

分数 25 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topological order obtained from the given directed graph? Now you are supposed to write a program to test …

Elasticsearch:在 Elastic 中访问机器学习模型

作者&#xff1a;Bernhard Suhm, Josh Devins Elastic 支持你需要的机器学习模型 Elastic 让你可以应用适合你的用例和 ML 专业水平的机器学习 (ML)。 你有多种选择&#xff1a; 利用内置的模型。 除了我们的可观察性和安全解决方案中针对特定安全威胁和系统问题类型的模型外…

Ubuntu crontab定时任务

1. crontab 相关的命令&#xff1a; 安装&#xff1a;apt-get install cron 启动&#xff1a;service cron start 重启&#xff1a;service cron restart 停止&#xff1a;service cron stop 检查状态&#xff1a;service cron status 查询cron可用的命令&#xff1a;service …

【算法排序】直接插入排序

目录 一、概念及其介绍二、过程图示三、复杂度以及稳定性四、代码实现 一、概念及其介绍 插入排序(InsertionSort)&#xff0c;一般也被称为直接插入排序。 对于少量元素的排序&#xff0c;它是一个有效的算法。插入排序是一种最简单的排序方法&#xff0c;它的基本思想是将一…

Keil(MDK-ARM)如何补充安装旧的编译器 AC5(ARM Compiler 5)

目录 一、前言二、下载1. 进入 Arm Developer 官网2. 下载 ARM Compiler 5 安装包3. 下载完成 三、安装1. 开始安装2. 安装过程3. 安装完成 四、配置1. 打开“Manage Project Items”2. 添加 ARM Compiler 5 编译器3. 添加成功4. 选择 ARM Compiler 5 作为当前使用的编译器 一、…

PHP+vue二手车交易信息网站系统

原来二手车网站由于二手车网站制度的不完善&#xff0c;许多城市的二手车网站市场都很少&#xff0c;而且欺诈行文较严重&#xff0c;肆意提高价格&#xff0c;隐瞒汽车所存在的故障问题&#xff0c;人们买卖二手车还是经过朋友帮忙介绍的途径来实现。这就导致了很多人的想卖车…

GitLab服务器搭建

文章目录 前述方式一&#xff1a;非容器安装搭建GitLab服务器查看gitlab用户的初始密码&#xff1a;修改初始密码gitlab配置文件修改服务的端口号启动并访问服务 方式二&#xff1a;容器下安装基于Docker安装Docker在容器中安装gitlab服务宿主机配置修改容器配置修改启动并访问…

SpringBoot如何优雅的实现参数验证

唠嗑部分 在我们设计接口时&#xff0c;参数验证是必不可少的一个环节&#xff0c;严格的参数验证能够保证数据的严谨&#xff0c;那么在SpringBoot项目中&#xff0c;你是如何验证参数的呢&#xff1f; 首先我们来描述一下需求 用户类&#xff0c;有用户名、用户头像、邮件…

基于html+css的图展示88

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

2000万的行数在2023年仍然是 MySQL 表的有效软限制吗?

谣言 互联网上有传言说我们应该避免在单个 MySQL 表中有超过 2000 万行。否则&#xff0c;表的性能会下降&#xff0c;当它超过软限制时&#xff0c;你会发现 SQL 查询比平时慢得多。这些判断是在多年前使用HDD硬盘存储时做出的。我想知道在2023年对于基于SSD的MySQL数据库来说…

【大数据学习篇10】Spark项目实战~网站转化率统计

学习目标/Target 掌握网站转化率统计实现思路 了解如何生成用户浏览网页数据 掌握如何创建Spark连接并读取数据集 掌握利用Spark SQL统计每个页面访问次数 掌握利用Spark SQL获取每个用户浏览网页的顺序 掌握利用Spark SQL合并同一用户浏览的网页 掌握利用Spark SQL统计每…

安卓基础巩固(三)多线程、数据存储、文件IO、SQLite

文章目录 多线程Handler相关概念UI线程/主线程MessageMessage QueueLooperHandler 使用步骤Handler.sendMessage&#xff08;&#xff09;Handler.post&#xff08;&#xff09; Handler 机制工作原理Handler内存泄露前置知识案例分析解决方案一&#xff1a;静态内部类弱引用解…

数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)

目录 题目描述 算法思路 伪代码 总体算法 BFS算法 伪代码解读 BFS算法 图解 题目描述 六度空间理论的核心观点是&#xff0c;人类社交网络中的任何两个人之间&#xff0c;平均只需要通过不超过六个中间人&#xff08;也就是六个社交关系&#xff09;就可以建立联系。换…

多台plc之间如何快速实现以太网无线连接?

常规来说&#xff0c;多台plc要实现以太网无线连接&#xff0c;首先要先确定以太网线必须正确连接&#xff0c;并建立物理连接。然后需要在PLC端设置好IP地址&#xff0c;以使不同PLC以相同协议可以实现通信交流。最后是建立PLC端数据采集及交换系统&#xff0c;要求在PLC端设置…

《封号码罗》关于js逆向猿人学第二题cookies里面m值的获取[纯扣算法](二十六)

这一题有点儿误打误撞的感觉。 本题使用了抓包工具Fiddler&#xff0c;m值在cookie里面&#xff0c;而且这个cookie是本地生成的 抓包发现有两次请求&#xff0c;第一次返回了一堆JS&#xff0c;而且cookie里面没有m值&#xff0c;第二次请求就带上了m值&#xff0c;所以m应该…

信号完整性分析基础知识之传输线和反射(七):带负载传输线、感性不连续引起的反射

带负载传输线 如果在传输线上有一个小的容性负载&#xff0c;信号会出现失真&#xff0c;上升时间也会降低。每个分立电容都会降低信号在其附近看到的阻抗。如果传输线上分布有多个容性负载&#xff08;例如一个总线上每隔1.2inch有一个2pF的连接器残桩&#xff0c;或者一个内…

单模光纤一维模场分布的MATLAB仿真

根据已知的单模光纤电场z分量分布&#xff0c;可以用MATLAB展示一维的模场分布 具体来说&#xff0c;通过数值计算解出给定光纤&#xff08;n_1&#xff0c;n_2&#xff0c;a&#xff09;参数时对应的V参量 通过特征方程解出V对应的W和U 通过这三个参数带入到光场的表达式中…

07. 算法之一致性哈希算法介绍

前言 哈希算法在程序开发中的很多地方都能看到他的身影&#xff0c;但是哈希有他的局限性&#xff0c;比如如果两个key哈希到同一个位置的时候&#xff0c;此时就不好处理。本节我们介绍一下常规处理方式。 1. 什么是哈希算法 哈希算法将任意长度的二进制值映射为较短的固定…