当前位置: 首页 > news >正文

[LeetCode] 784. 字母大小写全排序

题目描述:

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

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

示例 1:

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

示例 2:

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

提示:

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

题目链接:

. - 力扣(LeetCode)

解题主要思路:

其实这题很简单,遍历string中的每个元素,每次遍历的时候分两步走,一步是不需要进行大小写转换,这次直接插入char元素,然后进入下一次遍历;另一步是进行大小写转换,不过需要注意的是,如果在进行大小写转换的时候,发现需要转换的元素是数字的话,那就直接跳过,不需要任何改动,也不需要记录,否则ret中会出现多余的string,因为 “不需要进行大小写转换” 这一步已经帮我们做了该做的事。

解题代码:

class Solution {
public:vector<string> ret;string path;vector<string> letterCasePermutation(string s) {dfs(s, 0);return ret;}void dfs(string& s, int pos){// 结束条件if (path.size() == s.size()) {ret.push_back(path);return;}char c = s[pos];// 不改变path.push_back(c);dfs(s, pos+1);path.pop_back(); // 回溯// 改变if (!(c >= '0' && c <= '9')) {// 数字的话不用管if (c >= 'a' && c <= 'z') c -= 32;else c += 32;path.push_back(c);dfs(s, pos+1);path.pop_back();            }}
};

http://www.lryc.cn/news/471157.html

相关文章:

  • 大数据Azkaban(二):Azkaban简单介绍
  • Vue3_开启全局websocket
  • PTA 社交集群
  • USB Type-C 受电端取电快充协议芯片,支持PD+QC+FCP+SCP+AFC快充协议
  • C++ 模板专题 - 参数约束
  • 电商行业 | 用好企业培训工具,打造精英团队!
  • python进阶集锦
  • 8.C++小练习
  • 实现YOLO V3数据加载器:从文件系统读取图像与标签
  • 安装pygod
  • 探索Python与Excel的无缝对接:xlwings库的神秘面纱
  • CISE|暴雨受邀出席第二十六届中国国际软件博览会
  • OpenEuler22.03-sp2下安装docker-非常实用
  • 【学术会议论文投稿】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • [0152].第3节:IDEA中工程与模块
  • 【modbus协议】libmodbus库移植基于linux平台
  • SpringBoot+Minio实现多文件下载和批量下载
  • 3.swoole安装【Docker】
  • React 探秘(三): 时间切片
  • OSError: Can‘t load tokenizer for ‘bert-base-uncased‘.
  • 中国人寿财险青岛市分公司:专业团队,卓越服务
  • 【SpringCloud】基础问题
  • 牛客网刷题(1)(java之数据类型、数组的创建(静态/动态初始化)、static关键字与静态属性和方法、常用的servlet包、面向对象程序设计方法优点)
  • 电磁干扰(EMI)与电磁兼容性(EMC)【小登培训】
  • 保险行业的智能客服:企业AI助理与知识库的加速效应
  • PSINS工具箱函数介绍——inserrplot
  • 龙蟠科技业绩压力显著:资产负债率持续攀升,产能利用率也不乐观
  • 使用 Spring Cloud 有什么优势?
  • MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
  • SQL进阶技巧:Hive如何进行更新和删除操作?