784. 字母大小写全排列

匿名 (未验证) 提交于 2019-12-02 22:56:40

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

 示例: 输入: S = "a1b2" 输出: ["a1b2", "a1B2", "A1b2", "A1B2"]  输入: S = "3z4" 输出: ["3z4", "3Z4"]  输入: S = "12345" 输出: ["12345"] 

注意:

  • S12
  • S

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

tip 要把所有的大小写都写入数组中,数组大小是变化的的,所以当遍历数组之前,先将数组的大小赋予一个变量。

 class Solution { public:     char switchChar(char c){         if(c>='A' &&c<='Z'){             return tolower(c);         }         else if(c>='a' &&c<='z'){             return toupper(c);         }     }     vector<string> letterCasePermutation(string S) {         vector<string>l;         l.push_back(S);         for(int i=0;i<S.size();i++){             if(isalpha(S[i])){                 int size = l.size(); 			    for (int j = 0; j<size; j++) {                     string s1=l[j];                     s1[i]=switchChar(s1[i]);                     l.push_back(s1);                 }              }         }         return l;     } };

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!