LeetCode 784. 字母大小写全排列 【回溯算法】
发布日期:2025-06-19 11:15:21 浏览次数:4 分类:精选文章

本文共 1414 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要生成所有可能的字符串变种,其中每个字母可以选择转为大写或小写,而数字保持不变。我们可以使用回溯法来遍历每个字符的所有可能情况,从而生成所有可能的字符串。

方法思路

我们可以使用回溯法来遍历每个字符的所有可能情况。具体步骤如下:

  • 将输入字符串转换为字符数组,以便逐个处理每个字符。
  • 使用回溯法从第一个字符开始,逐步处理每个字符:
    • 如果当前字符是数字,只能保持不变,继续处理下一个字符。
    • 如果当前字符是字母,生成两种情况:保持小写和转为大写,然后继续处理下一个字符。
  • 当处理完所有字符时,将当前生成的字符串添加到结果列表中。
  • 解决代码

    import java.util.ArrayList;import java.util.List;public class Solution {    public List
    letterCasePermutation(String s) { List
    res = new ArrayList<>(); if (s.isEmpty()) { return res; } char[] arr = s.toCharArray(); backtracing(arr, "", res, 0); return res; } private void backtracing(char[] arr, String current, List
    result, int index) { if (index == arr.length) { result.add(current); return; } char c = arr[index]; if (Character.isDigit(c)) { backtracing(arr, current + c, result, index + 1); } else { String lower = current + Character.toLowerCase(c); backtracing(arr, lower, result, index + 1); String upper = current + Character.toUpperCase(c); backtracing(arr, upper, result, index + 1); } }}

    代码解释

  • letterCasePermutation 方法:将输入字符串转换为字符数组,并初始化回溯方法,返回结果列表。
  • backtracing 方法:递归处理每个字符:
    • 如果当前索引等于字符数组长度,添加当前字符串到结果列表。
    • 如果当前字符是数字,直接递归处理下一个字符。
    • 如果当前字符是字母,生成两种情况(小写和大写),然后递归处理下一个字符。
  • 这种方法确保了我们遍历了所有可能的字符组合,从而生成了所有可能的字符串变种。

    上一篇:LeetCode 剑指 Offer 61. 扑克牌中的顺子
    下一篇:LeetCode 剑指 Offer 10- II. 青蛙跳台阶问题

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2026年06月03日 04时05分00秒