Keshawn_lu's Blog

Leetcode 784. 字母大小写全排列

字数统计: 274阅读时长: 1 min
2022/10/30 Share

题目简介:

给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。

返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。

示例 1:

1
2
输入:s = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]

示例 2:

1
2
输入: s = "3z4"
输出: ["3z4","3Z4"]

提示:

  • 1 <= s.length <= 12
  • s 由小写英文字母、大写英文字母和数字组成

思路:

回溯,遇到字母时进行变换状态,当遍历到字符串结尾时将其加入res中。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:

vector<string> res;
void solve(int pos, string& s){

if(pos == s.size()){

res.push_back(s);
return;
}

for(int i = pos; i < s.size(); i++){

if(s[i] >= 'a' && s[i] <= 'z'){

s[i]-= 32;
solve(i + 1, s);
s[i] += 32;
}
else if(s[i] >= 'A' && s[i] <= 'Z'){

s[i] += 32;
solve(i + 1, s);
s[i] -= 32;
}
}

res.push_back(s);
}

vector<string> letterCasePermutation(string s) {

solve(0, s);
return res;
}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: