广西网站建设教程,用asp做网站span,wordpress设置ip白名单,wordpress 云相册目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中#xff0c;刷题点这里 专栏导读
本专栏收录于《华为OD机试#xff08;JAVA#xff09;真题#xff08;A卷B卷#… 目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中刷题点这里 专栏导读
本专栏收录于《华为OD机试JAVA真题A卷B卷》。
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。
一、题目描述
每个数字关联多个字母关联关系如下
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。
二、输入描述
第一行输入为一串数字字符串数字字符串中的数字不允许重复数字字符串的长度大于0小于等于5 第二行输入是屏蔽字符串屏蔽字符串的长度一定小于数字字符串的长度屏蔽字符串中字符不会重复
三、输出描述
输出可能的字符串组合
注字符串之间使用逗号隔开最后一个字符串后携带逗号
四、解题思路
定义数组arr存储每个数字关联多个字母第一行输入为一串数字字符串第二行输入是屏蔽字符串定义集合list加载第一行字母关联的数字并将集合list加载到map中使用深度优先搜索dfs算法遍历map输出所有可能的输出可能的字符串组合。
五、Java算法源码
package com.guor.od;import java.util.*;public class OdTest {static MapInteger, ListCharacter map new HashMapInteger, ListCharacter();static String[] numArr null;static ListString okList new ArrayList();public static void main(String[] args) {// 每个数字关联多个字母关联关系如下String[] arr {abc, def, ghi, jkl, mno, pqr, st, uv, wx, yz};Scanner sc new Scanner(System.in);String input1 sc.nextLine();String input2 sc.nextLine();ListInteger numberList new ArrayList();for (int i 0; i input1.length(); i) {numberList.add(Integer.parseInt(input1.charAt(i) ));}int count 0;for (int i 0; i arr.length; i) {if (numberList.contains(i)) {// 第一行字母关联的数字ListCharacter list new ArrayListCharacter();for (int j 0; j arr[i].length(); j) {list.add(arr[i].charAt(j));}map.put(count, list);}}numArr new String[map.size()];dfs(0);for (String s : okList) {if (s.indexOf(input2) -1) {System.out.print(s ,);}}}static StringBuilder builder new StringBuilder();public static void dfs(int num) {if (num map.size()) {for (int i 0; i numArr.length; i) {builder.append(numArr[i]);}okList.add(builder.toString());builder.setLength(0);return;}for (int i 0; i map.get(num).size(); i) {numArr[num] map.get(num).get(i) ;dfs(num 1);}}
}六、效果展示
1、输入
89 wy
2、输出
wz,xy,xz,
3、说明
89对应wx, “yz”。
屏蔽wy。
“wx”, yz四种有效组合屏蔽wy变为wz,xy,xz, 下一篇华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
本文收录于华为OD机试JAVA真题A卷B卷
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。