java - 如何创建字符串或字符类型的二维列表?
问题描述
所以我试图在 leetcode 上解决这个问题——
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
现在我想创建一个二维字符串列表,使我的“2”对应于 a,b,c ,“3”对应于 d,e,f.... 以此类推我的二维列表看起来像这样 - [[a,b,c],[d,e,f].....[w,x,y,z]] 或者我们可以说每个字符串角色可以被视为一个角色,它看起来像这样 -
美国广播公司
定义
. . . . .
wxyz
但我无法这样做。我尝试了各种方法,例如-
1.
List<String> str = new ArrayList<String>();
str.add("abc");
digitMap.add(0,str);
str.set(0,"def");
digitMap.add(1,str);
str.set(0,"ghi");
digitMap.add(2,str);
通常,当我想传递二维列表中的任何值时,我首先创建一个一维列表并在二维列表中传递它的引用,然后清空一维列表,但是当 str 作用时这些值被覆盖引用和对其所做的任何更改都将在 digitMap 中可见,因此所有行都将具有上次在 str 中输入的相同值,因此此方法失败。
- 我试图创造
List<List<String[]>> digitMap = new ArrayList<>();
这样每个 List 都包含一个 String [] 类型的数组。
但无法存储 List 类型为 String[] 类型的值。
我知道我们可以使用 HashMap 将其存储为 (Key,Value) 格式,但我希望在 List Interface 上有一个正确的命令。
我真的迷失在实施部分。如果有人向我建议一个链接,我可以用外行术语深入了解 Java 中的集合,那将是非常有帮助的。
解决方案
试试这个解决方案。看看它是如何工作的:
final char[][] L = {{},{},{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'},
{'m','n','o'},{'p','q','r','s'},{'t','u','v'},{'w','x','y','z'}};
public List<String> letterCombinations(String D) {
int len = D.length();
List<String> ans = new ArrayList<>();
if (len == 0) return ans;
bfs(0, len, new StringBuilder(), ans, D);
return ans;
}
public void bfs(int pos, int len, StringBuilder sb, List<String> ans, String D) {
if (pos == len) ans.add(sb.toString());
else {
char[] letters = L[Character.getNumericValue(D.charAt(pos))];
for (int i = 0; i < letters.length; i++)
bfs(pos+1, len, new StringBuilder(sb).append(letters[i]), ans, D);
}
}
推荐阅读
- php - 使用按钮从数据库中删除/修改用户
- node.js - Nodejs 使用 Sequelize。“[].belongsTo 调用的不是 Sequelize.Model 在 Function 的子类。”
- java - 从三个侧面计算的角度仅显示 90 或 180 度
- c# - 如何在winforms中将嵌套列表绑定到datagridview
- python - 如何在python中将子列表和字符串结合起来列出
- javascript - 在我的所有代码都应该完成之后执行的 Javascript 代码
- python - 名单中的棋子宣布获胜者
- quill - 需要一种使用自定义按钮切换段落(块)类的方法
- java - 内容解析器无法在平板设备上运行
- list - 选择 Dropdown Googlesheets 脚本后从列表中删除项目