做类似淘宝的网站,做棋牌网站,设计师网上接私单app,厦门排名推广1、题目描述
【字母组合】 数字0、1、2、3、4、5、6、7、8、9分别关联 a~z 26个英文字母。 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…1、题目描述
【字母组合】 数字0、1、2、3、4、5、6、7、8、9分别关联 a~z 26个英文字母。 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” 例如7关联”u”,”v”8关联”x”,”w”输入一个字符串例如“78”和一个屏蔽字符串“ux”那么“78”可以组成多个字符串例如“ux”“uw”“vx”“vw”过滤这些完全包含屏蔽字符串的每一个字符的字符串然后输出剩下的字符串。
【示例1】 输入输出示例仅供调试后台判断数据一般不包含示例
输入 78 ux
输出 uw vx vw 说明ux完全包含屏蔽字符串ux因此剔除。
2、解题思路
该题是力扣中的【电话号码的字母组合】的改编题用map存储数字与字符的对应关系用回溯算法遍历组合成所有的字符串然后剔除掉完全包含屏蔽字符串的字符串剩下的即为结果
3、参考代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class 字母组合 {public static void main(String[] args) {Scanner in new Scanner(System.in);MapString, String map new HashMap();map.put(0, abc);map.put(1, def);map.put(2, ghi);map.put(3, jkl);map.put(4, mno);map.put(5, pqr);map.put(6, st);map.put(7, uv);map.put(8, wx);map.put(9, yz);while (in.hasNext()) {String str in.next();String gxStr in.next();String[] strings str.split();ListString path new ArrayList();dfs(map, strings, 0, new StringBuilder(), path);StringBuilder stringBuilder new StringBuilder();for (String pa : path) {if (!pa.contains(gxStr)) {stringBuilder.append(pa).append( );}}System.out.println(stringBuilder.toString().trim());}}public static void dfs(MapString, String map, String[] strings, int startIndex, StringBuilder sb, ListString path) {if (startIndex strings.length) {path.add(sb.toString());return;}String mapValues map.get(strings[startIndex]);for (int i 0; i mapValues.length(); i) {sb.append(mapValues.charAt(i));dfs(map, strings, startIndex 1, sb, path);sb.deleteCharAt(sb.length() - 1);}}}
4、相似题目
1电话号码的字母组合
class Solution {ListString res new ArrayList();public ListString letterCombinations(String digits) {if(digits null || digits.length() 0) {return res;}String[] numString {, , abc, def, ghi, jkl, mno, pqrs, tuv, wxyz};dfs(numString, digits, 0, new StringBuilder());return res;}private void dfs(String[] numString, String digits, int startIndex, StringBuilder stringBuilder) {if(startIndex digits.length()) {res.add(stringBuilder.toString());return;}// char c digits.charAt(startIndex); // 2String str numString[digits.charAt(startIndex) - 0]; // abcfor(int i 0; i str.length(); i ) {stringBuilder.append(str.charAt(i));dfs(numString, digits, startIndex 1, stringBuilder);stringBuilder.deleteCharAt(stringBuilder.length() - 1);}}
}