LeetCode 784:字母大小写全排列

原题:

思路:先将S放到数组里,循环遍历S的每个字符,当字符为字母的时候,遍历数组,将字符位转变成(这个字符原大写改为小写,小写改为大写)然后存入数组中。

“这里为什么要遍历数组”想了很久,贴图:

例如:使数组第一个元素第一个字母变为大写,遍历“a1b2c3”变为“A1b2c3”

            使数组第一,二个元素第二个字母变为大写,遍历“a1b2c3”“A1b2c3”变为"a1B2c3","A1B2c3"

           使数组第一,二,三,四个元素第三个字母变为大写"a1b2c3","A1b2c3","a1B2c3","A1B2c3"变为"a1b2C3","A1b2C3","a1B2C3","A1B2C3"

class Solution {
public:
char switchChar(char c){
  if(c>='a'&&c<='z')
           {
             return toupper(c);
           }
           else if (c>='A'&&c<='Z')
            {
             return tolower(c);
            } 
            return ' ';  //注意这里一定要返回一个字符,否则在Leetcode编译会发生错误
}
    vector<string> letterCasePermutation(string S) {
       vector<string>result;
       result.push_back(S);
       int length=S.size();
       for(int i=0;i<length;i++)
       {
           if(isalpha(S[i]))
           {
//这里要先计算数组元素个数,在循环里面不可以写j<result.size();容器里的元素一直在增加,
//是无穷无尽的,编译发生错误
               int size=result.size();  
               for(int j=0;j<size;j++)  //遍历数组每一个元素
               {
                   string sl=result[j];
                   sl[i]=switchChar(sl[i]);
                   result.push_back(sl);
               }
           }
       }
       return result;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值