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

[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.kler.cn/a/369291.html

相关文章:

  • CSS 入门:美化网页的魔法
  • 本地docker-compose仓库搭建以及推送docker镜像到仓库
  • Nuxt3搭建的社区网站-弦圈
  • 分库分表常见面试问题
  • 华为原生鸿蒙操作系统:我国移动操作系统的新篇章
  • 鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元
  • 聚合值和非聚合值比较【SQL】
  • 基于SpringBoot的高考志愿智能推荐系统的设计与实现
  • Stable diffusion inference 多卡并行
  • FAQ-为什么交换机发给服务器的日志显示的时间少8小时
  • 易考八股文之如何对数据库进行优化(优化不少于十条)
  • 【学术会议论文投稿】“从零到一:使用IntelliJ IDEA打造你的梦幻HTML项目“
  • Android 原生开发与Harmony原生开发浅析
  • 压缩传感革命——自动验证算法证明了神经网络的准确性
  • ETL、ELT和反向ETL都有什么不同?怎么选择?
  • 基于vue框架的的高校学生资助信息系统3b240(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • Linux服务器自动化批量安装IB网卡驱动
  • Git - 如何删除 push 过一次的文件链路追踪?
  • autMan奥特曼机器人-实时翻译的用法
  • 常用 SQL 语句的大全
  • Mybatis高级
  • Android13、14特殊权限-应用安装权限适配
  • Django-中间件(切面编程AOP)
  • 设计模式(二)
  • cjson内存泄漏问题注意事项
  • 股市投资有哪些实用心得?