Kazaf's blog Kazaf's blog
首页
  • javascript
  • typescript
  • vue
  • react
  • babel
  • nginx
GitHub (opens new window)

Kazaf

前端打字员
首页
  • javascript
  • typescript
  • vue
  • react
  • babel
  • nginx
GitHub (opens new window)
  • LeetCode 字母大小写全排列-784

    • 题目
      • 思路
      • LeetCode
      kazaf
      2021-06-17

      LeetCode 字母大小写全排列-784

      # 题目

      给定一个字符串 S,通过将字符串 S 中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。

      示例: 示例: 输入: S = "a1b2" 输出: ["a1b2", "a1B2", "A1b2", "A1B2"] 输入: S = "3z4" 输出: ["3z4", "3Z4"] 输入: S = "12345" 输出: ["12345"] 注意: S 的长度不超过 12。 S 仅由数字和字母组成。

      # 思路

      这题不需要交换顺序排列组合,从 0 索引开始查找,如果是当前数组项为数字则跳过,为字母则将大写和小写两种组合添加到 res 中,并将 index + 1 传入作为下一次循环的索引的开始,直到匹配不到字母循环结束。

      /**
       * @param {string} S
       * @return {string[]}
       */
      const letterCasePermutation = S => {
        const res = []
        // 递归方法
        const backtrack = (start, s) => {
          res.push(s)
          // start记录为字母项的下标,从start开始循环。
          for (let i = start; i < s.length; i++) {
            // 找到为字母的项,分别添加其大写与小写两种组合,数字则跳过。
            if (s[i] >= 'a' && s[i] <= 'z') {
              // 添加大写的组合进行拼接
              backtrack(i + 1, s.slice(0, i) + s[i].toUpperCase() + s.slice(i + 1))
            } else if (s[i] >= 'A' && s[i] <= 'Z') {
              // 添加小写的组合进行拼接
              backtrack(i + 1, s.slice(0, i) + s[i].toLowerCase() + s.slice(i + 1))
            }
          }
        }
        // 从0开始找,添加初始值进入res
        backtrack(0, S)
        return res
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      编辑 (opens new window)
      #LeetCode
      上次更新: 2022/03/19, 16:48:28
      最近更新
      01
      React中的受控和非受控组件
      09-22
      02
      nginx基本配置
      06-01
      03
      vue添加水印
      05-26
      更多文章>
      Theme by Vdoing | Copyright © 2021-2022
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式