当前位置:   article > 正文

每日OJ题_DFS爆搜深搜回溯剪枝①_力扣784. 字母大小写全排列

每日OJ题_DFS爆搜深搜回溯剪枝①_力扣784. 字母大小写全排列

目录

力扣784. 字母大小写全排列

解析代码1_path是全局变量

解析代码2_path是函数参数


力扣784. 字母大小写全排列

784. 字母大小写全排列

难度 中等

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= s.length <= 12
  • s 由小写英文字母、大写英文字母和数字组成
  1. class Solution {
  2. public:
  3. vector<string> letterCasePermutation(string s) {
  4. }
  5. };

解析代码1_path是全局变量

只需要对英文字母进行处理,处理每个元素时存在三种情况:

  1. 不进行处理(字母也不处理,后面再处理,就是全部结果了)
  2. 若当前字母是英文字母并且是大写,将其修改为小写
  3. 若当前字母是英文字母并且是小写,将其修改为大写

path 是全局变量的代码:

  1. class Solution {
  2. vector<string> ret;
  3. string path;
  4. public:
  5. vector<string> letterCasePermutation(string s) {
  6. dfs(s, 0);
  7. return ret;
  8. }
  9. void dfs(const string& s, int pos)
  10. {
  11. if(path.size() == s.size())
  12. {
  13. ret.push_back(path);
  14. return;
  15. }
  16. char ch = s[pos];
  17. path.push_back(ch); // 不改变
  18. dfs(s, pos + 1);
  19. path.pop_back(); // 恢复现场
  20. if(ch < '0' || ch > '9') // 改变
  21. {
  22. path.push_back(change(ch)); // 改变
  23. dfs(s, pos + 1);
  24. path.pop_back(); // 恢复现场
  25. }
  26. }
  27. char change(char ch)
  28. {
  29. if(ch >= 'a' && ch <= 'z')
  30. ch -= 32;
  31. else
  32. ch += 32;
  33. return ch;
  34. }
  35. };

解析代码2_path是函数参数

思路和解析代码1一样,path是函数参数的代码:

  1. class Solution {
  2. vector<string> ret;
  3. public:
  4. vector<string> letterCasePermutation(string s) {
  5. dfs(s, 0, "");
  6. return ret;
  7. }
  8. void dfs(const string& s, int pos, string path)
  9. {
  10. if(path.size() == s.size())
  11. {
  12. ret.push_back(path);
  13. return;
  14. }
  15. char ch = s[pos];
  16. dfs(s, pos + 1, path + ch); // 不改变
  17. if(ch < '0' || ch > '9') // 改变
  18. {
  19. dfs(s, pos + 1, path + change(ch));
  20. }
  21. }
  22. char change(char ch)
  23. {
  24. if(ch >= 'a' && ch <= 'z')
  25. ch -= 32;
  26. else
  27. ch += 32;
  28. return ch;
  29. }
  30. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/540408
推荐阅读
相关标签
  

闽ICP备14008679号