LeetCode算法题之784. Letter Case Permutation(easy)【Python3题解】

题目描述:
Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string. Return a list of all possible strings we could create.

Examples:
Input: S = “a1b2”
Output: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]

Input: S = “3z4”
Output: [“3z4”, “3Z4”]

Input: S = “12345”
Output: [“12345”]

Note:

S will be a string with length between 1 and 12.
S will consist only of letters or digits.

题目大意:

  • 给定一个字符串,其中包括字母和数字,字母的话,可以改变成大写或者小写,组成新的字符串
  • 输出所有的排列方式

解题思路:

  • 题中字符串中的数字只是一个幌子,重点其实就是字母,大小写两种方式改变,组成新的字符串
  • 有几种组合方式,见下图
    在这里插入图片描述
  • 如图所示,其实组合方式,就是每条路径上的字符组合
  • 只要编写一个程序,可以实现对路径的遍历,即可
  • 也有人将以上过程称之为“回溯

少废话,上代码:

class Solution:
    def letterCasePermutation(self, S):
        # 定义答案空列表
        ans = []

        def f(S, s, idx):
            """
            
            :param S: 题目所给的字符串
            :param s: 自定义的变量,记录路径上的字符变化
            :param idx: 索引,每次去找下一个
            :return: 
            """
            # 结束条件
            if len(s) == len(S):
                ans.append(s)
                return
            # 遇到的是字母
            if S[idx].isalpha():
                f(S, s+S[idx].lower(), idx+1)
                f(S, s+S[idx].upper(), idx+1)
            else:
                f(S, s+S[idx], idx+1)
        f(S, "", 0)

        return ans

运行时间和内存占用:

  • Runtime: 60 ms, faster than 59.10% of Python3 online submissions for Letter Case Permutation.
  • Memory Usage: 14.8 MB, less than 31.11% of Python3 online submissions for Letter Case Permutation.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值