字母大小写转换

该博客介绍了一个Python程序设计问题,涉及字母大小写的转换。给定字符串S,程序通过二进制方式决定每个字母是否改变大小写,生成所有可能的组合并以列表形式输出。例如,输入S=a1b2,输出为['a1b2', 'a1B2', 'A1b2', 'A1B2']。博客提供了详细的代码实现,并展示了如何使用该功能。
摘要由CSDN通过智能技术生成
class Solution(object):
    def letterCasePermutation(self, S):
        #参数S为字符串
        #返回字符串列表
        # 利用二进制对应字符串。其中0表示大小写不变,1表示改变大小写
        res = []
        indices = []
        indices = [i for i,_ in enumerate(S) if S[i].isalpha()]
        for i in range(0, pow(2,len(indices))):
            if i==0:
                res.append(S)
            else:
                j=i;bpos=0;nsl=list(S)
                while j>0:
                    ci2c = indices[bpos]
                    if j&1 and S[ci2c].islower():
                        nsl[ci2c]=S[ci2c].upper()
                    elif j&1 and S[ci2c].isupper():
                        nsl[ci2c]=S[ci2c].lower()
                    bpos+=1
                    j = j >> 1
                res.append("".join(nsl))
        return res
if __name__ == '__main__':
    solution=Solution()
    S = "a1b2"
    print("输入为:",S)
    print("输出为:",solution.letterCasePermutation(S))

进阶版


```python
"""
设计:Python程序设计
作者:初学者
日期:2022年 04月 13日
"""


# 例77
# 字母大小写转换
# 1.
# 问题描述
# 给定一个字符串S,可以将其中所有的字符任意切换大小写,得到一个新的字符串。
# 将所有可生成的新字符串以一个列表的形式输出。
# 2.
# 输入S = a1b2, 输出["a1b2", "a1B2", "A1b2", "A1B2"]。
# 3。代码实现


class Solution(object):
    """
    参数S:字符串
    返回字符串列表
    利用二进制对应字符串,其中0表示大小写不变,1表示改变大小写

    """

    def __init__(self, S):
        self.S = S

    def letter_toggle_case(self):
        res = []
        indices = [i for i, _ in enumerate(self.S) if S[i].isalpha()]
        for i in range(0, pow(2, len(indices))):
            if i == 0:
                res.append(self.S)
            else:
                j = i;
                bpos = 0;
                nsl = list(S)
                while j > 0:
                    ci2c = indices[bpos]
                    if j & 1 and self.S[ci2c].islower():

                        nsl[ci2c] = self.S[ci2c].upper()
                    elif j & 1 and self.S[ci2c].isupper():
                        nsl[ci2c] = self.S[ci2c].lower()
                    bpos += 1
                    j = j >> 1
                res.append("".join(nsl))
        return res


# 主函数
if __name__ == '__main__':
    s = Solution("a1b2")
    S = "a1b2"
    print("输入:", S)
    print("输出:", s.letter_toggle_case())


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪荒宇宙py

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值