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

news/2024/11/17 19:27:22/

目录

力扣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 由小写英文字母、大写英文字母和数字组成
class Solution {
public:vector<string> letterCasePermutation(string s) {}
};

解析代码1_path是全局变量

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

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

path 是全局变量的代码:

class Solution {vector<string> ret;string path;
public:vector<string> letterCasePermutation(string s) {dfs(s, 0);return ret;}void dfs(const string& s, int pos){if(path.size() == s.size()){ret.push_back(path);return;}char ch = s[pos];path.push_back(ch); // 不改变dfs(s, pos + 1);path.pop_back(); // 恢复现场if(ch < '0' || ch > '9') // 改变{path.push_back(change(ch)); // 改变dfs(s, pos + 1);path.pop_back(); // 恢复现场}}char change(char ch){if(ch >= 'a' && ch <= 'z')ch -= 32;elsech += 32;return ch;}
};

解析代码2_path是函数参数

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

class Solution {vector<string> ret;
public:vector<string> letterCasePermutation(string s) {dfs(s, 0, "");return ret;}void dfs(const string& s, int pos, string path){if(path.size() == s.size()){ret.push_back(path);return;}char ch = s[pos];dfs(s, pos + 1, path + ch); // 不改变if(ch < '0' || ch > '9') // 改变{dfs(s, pos + 1, path + change(ch));}}char change(char ch){if(ch >= 'a' && ch <= 'z')ch -= 32;elsech += 32;return ch;}
};


http://www.ppmy.cn/news/1446646.html

相关文章

qt5-入门-2D绘图-Graphics View 架构

参考&#xff1a; Qt Graphics View Framework_w3cschool https://www.w3cschool.cn/learnroadqt/4mvj1j53.html C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 基础知识 QPainter比较适合少量绘图的情…

界面组件DevExpress中文教程 - 如何在Node.js应用中创建报表?

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 获取DevExpress Reporting最新正式版下载(Q技术…

自定义Application,获取全局的Context

在Android中&#xff0c;如果你想要获取全局的Context&#xff0c;并且希望在整个应用程序的生命周期内都可以访问它&#xff0c;你可以通过创建一个自定义的Application类来实现。这个类会继承自android.app.Application&#xff0c;并且你可以在其中存储一些全局数据或者实现…

nginx缓存清理

背景 昨天打开我的gpt镜像网站&#xff0c;意外发现静态图片资源全都无法获取了 CoCo-AI 一番排查下来&#xff0c;发现是引用的cdn链接失效了 且cdn源是属于七牛云的&#xff0c;且不再维护&#xff0c;于是果断切换到cloudflare export function getEmojiUrl(unified: str…

【docker 】Windows10安装 Docker

安装 Hyper-V Hyper-V 是微软开发的虚拟机&#xff0c;仅适用于 Windows 10。 按键&#xff1a; win键X &#xff0c;选着程序和功能 在查找设置中输入&#xff1a;启用或关闭Windows功能 选中Hyper-V 点击确定 安装 Docker Desktop for Windows Docker Desktop 官方下载…

Vue入门到关门之Vue项目工程化

一、创建Vue项目 1、安装node环境 官网下载&#xff0c;无脑下一步&#xff0c;注意别放c盘就行 Node.js — Run JavaScript Everywhere (nodejs.org) 需要两个命令 npm---->pipnode—>python 装完检查一下&#xff0c;hello world检测&#xff0c;退出crtlc 2、搭建vu…

【Golang】Gin 框架的多种类型绑定函数

文章目录 前言一、Gin 框架解释二、代码实现三、总结 前言 在开发 Web 应用时&#xff0c;处理 HTTP 请求和响应是我们经常需要做的事情。在 Go 语言中&#xff0c;我们有许多优秀的 Web 框架可以帮助我们完成这项工作&#xff0c;而 Gin 框架就是其中之一。本文将深入探讨 Gi…

网络安全:绕过 MSF 的一次渗透测试

这次渗透的主站是 一个 DiscuzDiscuz!3.4 的搭建 违法招 piao 网站&#xff0c; 配置有宝塔 WAF 用 Discuz!ML 3.X 的漏洞进行攻击&#xff0c;但是没有成功 现主站外链会有一个发卡网&#xff0c;引导人们来这充值&#xff0c;是 某某发卡网&#xff0c;而且域名指向也是主站…