LeetCode 784 Letter Case Permutation 解题报告

题目要求

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.

题目分析及思路

给定一个字符串,考虑每个字母都有大小写,返回可能的所有字符串。由于每个字母都有两种形式,可结合二进制的思想,有n个字母就有2^n种结果。遍历2^n范围内的所有数字,其对应的二进制形式,0代表小写字母,1代表大写字母。再创建一个新字符串并遍历所给字符串的每个字符,若为数字,则直接加到新字符串的后面,若不是,则对应该位置为0,添加字母的小写形式,否则添加大写形式。直到得到所有结果。

python代码

class Solution:

    def letterCasePermutation(self, S: str) -> List[str]:

        res = []

        letters = [c for c in S if c.isalpha()]

        l = len(letters)

        for i in range(1 << l):

            j = 0

            s = ''

            for c in S:

                if c > '9':

                    if (i >> j) & 1 == 1:

                        s += c.upper()

                    else:

                        s += c.lower()

                    j += 1

                else:

                    s += c

            res.append(s)

        return res

        

        

                

    

        

        

 

posted on 2019-03-17 10:27  锋上磬音  阅读(142)  评论(0编辑  收藏  举报