JAVA练习330- 电话号码的字母组合 题目概览给定一个仅包含数字2-9的字符串返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下与电话按键相同。注意 1 不对应任何字母。示例 1输入digits 23输出[ad,ae,af,bd,be,bf,cd,ce,cf]示例 2输入digits 2输出[a,b,c]提示1 digits.length 4digits[i]是范围[2, 9]的一个数字。来源17. 电话号码的字母组合 - 力扣LeetCode解题分析方法回溯先用一个哈希表存储数字和字符串的映射。令当前数字的索引为 i用集合存储之前拼过的字符前缀 prefix每次递归我们遍历 i 位置的数字对应的字符串将当前字符存入 prefix 中然后继续递归遍历 i 1 的数字直到 i n - 1这样得的 prefix 就是结果之一递归完成后回溯到上一层将当前字符移除继续遍历下一个字符重复操作直到遍历完成。时间复杂度O(4^m * 3^n) ( m 为字符串长度为 4 的数字个数n为字符串长度为 3 的数字个数空间复杂度O(mn)class Solution { public static MapCharacter, String mapping new HashMap(); static { mapping.put(2, abc); mapping.put(3, def); mapping.put(4, ghi); mapping.put(5, jkl); mapping.put(6, mno); mapping.put(7, pqrs); mapping.put(8, tuv); mapping.put(9, wxyz); } public ListString letterCombinations(String digits) { ListString result new ArrayList(); backTracking(digits, result, 0, digits.length(), new StringBuffer()); return result; } public void backTracking(String digits, ListString result, int index, int n, StringBuffer prefix) { if (index n) { result.add(prefix.toString()); return; } String letters mapping.get(digits.charAt(index)); for (int i 0; i letters.length(); i) { prefix.append(letters.charAt(i)); backTracking(digits, result, index 1, n, prefix); prefix.deleteCharAt(index); } } }

相关新闻

最新新闻

DB Master

DB Master

DB Master(数据库主节点 Master)完整详解 绝大多数开发 / 面试场景提到 DB Master,指主从复制架构中的 Master 主库(MySQL 主从最常见);区分:≠ DBMaster 商用数据库、≠ SQL Server master 系统…

2026/7/24 9:52:34
这届世界杯花钱最狠的人,不懂球 2026世界杯消费报告

这届世界杯花钱最狠的人,不懂球 2026世界杯消费报告

不熬夜,不去酒吧,美加墨把年轻人的钱「逼回家」。随着加时赛那粒制胜进球的落下,西班牙时隔16年再次举起大力神杯,这场横跨美加墨三国、48支球队的世界杯终于尘埃落定。这届世界杯从来不缺爆冷、争议和绝少,但比球场更…

2026/7/24 9:52:34
AI内容优化实战:三步降低生成痕迹提升专业度

AI内容优化实战:三步降低生成痕迹提升专业度

1. 为什么我们需要降低AI生成痕迹?在内容创作领域,AI辅助工具已经无处不在。但过度依赖AI生成内容会导致两个致命问题:一是内容同质化严重,二是缺乏真实感和专业深度。我最近接手的一个企业内容项目就遇到了这种情况——初稿的AI生…

2026/7/24 9:52:34
LLM跨模态技术:从架构解析到工程实践

LLM跨模态技术:从架构解析到工程实践

1. 当语言模型学会看图:LLM跨模态技术演进实录三年前我在处理一个商品描述生成项目时,首次遭遇多模态数据的撕裂感——算法团队提供的视觉特征向量和NLP团队输出的文本embedding就像两个平行宇宙。直到2022年CLIP模型的横空出世,才让我意识到…

2026/7/24 9:52:34
Visual C++ 中将日期时间转换为自 1970 年以来的秒数(Unix 时间戳)

Visual C++ 中将日期时间转换为自 1970 年以来的秒数(Unix 时间戳)

// 获取当前时间CTime timeNow CTime::GetCurrentTime();time_t secondsSince1970 timeNow.GetTime(); // 直接获取秒数long long ts secondsSince1970;// 或者从特定的日期时间构造CTime specificTime(2026, 7, 23, 10, 30, 0); // 年,月,日,时,分,秒 (本地时间)time_t spe…

2026/7/24 9:52:34
私域数据在AI开发中的双重角色与技术实现

私域数据在AI开发中的双重角色与技术实现

1. 私域数据在AI开发中的双重角色私域数据在企业AI开发中扮演着两个看似矛盾实则互补的角色:作为"燃料"提供能量,作为"配方"定义方向。这种双重属性决定了其在AI应用开发中的核心价值。1.1 数据作为"燃料"的基础作用数据作…

2026/7/24 9:47:33

月新闻