LeetCode 1087. 字母切换(回溯)
文章目录
- 1. 题目
- 2. 解题
1. 题目
我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念:
单词中的每个字母可能只有一个选项或存在多个备选项。
如果只有一个选项,那么该字母按原样表示。
如果存在多个选项,就会以花括号包裹来表示这些选项(使它们与其他字母分隔开),例如 "{a,b,c}"
表示 ["a", "b", "c"]
。
例子:"{a,b,c}d{e,f}"
可以表示单词列表 ["ade", "adf", "bde", "bdf", "cde", "cdf"]
。
请你按字典顺序,返回所有以这种方式形成的单词。
示例 1:
输入:"{a,b}c{d,e}f"
输出:["acdf","acef","bcdf","bcef"]示例 2:
输入:"abcd"
输出:["abcd"]提示:
1 <= S.length <= 50
你可以假设题目中不存在嵌套的花括号
在一对连续的花括号(开花括号与闭花括号)之间的所有字母都不会相同
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/brace-expansion
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
class Solution {vector<string> ans;
public:vector<string> expand(string S) {vector<vector<char>> str;vector<char> t;int count = 0;for(int i = 0; i < S.size(); ++i){if(isalpha(S[i]))t.push_back(S[i]);else if(S[i] == '}' || (S[i] == '{' && !t.empty())){if(S[i] == '}') count++;sort(t.begin(), t.end());str.push_back(t);t.clear();}}if(!t.empty()){sort(t.begin(), t.end());str.push_back(t);}if(count == 0) return {S};//没有花括号,直接返回dfs(str, "", 0);return ans;}void dfs(vector<vector<char>>& str, string s, int i){if(i == str.size()){ans.push_back(s);return;}for(int j = 0; j < str[i].size(); ++j)dfs(str, s+str[i][j], i+1);}
};
8 ms 8.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 1087. 字母切换(回溯)相关推荐
- LeetCode之单词搜索(回溯法求解)
题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内 ...
- Leetcode 40组合总数(回溯)Ⅱ41缺失的第一个正数42接雨水
维护公众号:bigsai ,回复进群加入打卡,回复bigsai分享一些学习资源! 上周第一次 LeetCode 36有效的数独&37解数独(八皇后问题) 上周第二次 LeetCode 38外观 ...
- leetcode之字母异位词分组
题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. 示例 1: 输 ...
- LeetCode 784. 字母大小写全排列(位运算回溯)
1. 题目 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: [&q ...
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...
- LeetCode 848. 字母移位(前缀和+取模)
文章目录 1. 题目 2. 解题 1. 题目 有一个由小写字母组成的字符串 S,和一个整数数组 shifts. 我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, 'z' 将会变成 ' ...
- LeetCode 49. 字母异位词分组(哈希)
1. 题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例:输入: ["eat", "tea", "ta ...
- LeetCode 77. 组合(回溯)
1. 题目 给定两个整数 n 和 k,返回 1 - n 中所有可能的 k 个数的组合. 示例:输入: n = 4, k = 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[ ...
- LeetCode 78. 子集(回溯)
文章目录 1. 题目信息 2. 解题 2.1 暴力回溯 2.2 循环 2.3 位运算 1. 题目信息 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重 ...
最新文章
- LeetCode Generate Parentheses
- 邹伟博士出书啦!——《强化学习》从基础概念、核心原理到应用案例(文末赠书)...
- volatile修饰变量
- OpenStack Weekly Rank 2015.08.24
- empinfo Oracle数据库,Oracle数据库---包
- linux 更改配置文件 禁止ssh,配置linux用户实现禁止ssh登陆但可用sftp登录
- 动画片动漫迷<未来的未来>高清图片壁纸
- 正则表达式---重复
- pta Percolate Up and Down(最小堆的插入维护和删除维护)
- MATLAB实现智能优化算法
- 《前端工具系列》最好用的git可视化工具——SourceTree
- 如何下载Eclipse历史版本
- 剑指offe 面试题5, 从尾到头打印链表
- AS 导出aar给Unity出打包出现Unable to merge android manifests
- 关于猫鼻支的防范和治疗
- win11右键菜单缺少“新建“选项解决办法“
- chrome控制台如何把vw显示成px_Chrome 开发者工具的11 个高级使用技巧
- 警惕“电子发票”邮件,多家企业中招
- 河大计算机学院足球队,我校第二十九届“河大杯”足球赛落幕
- 程序猿职场求生指南[手动狗头]
热门文章
- Random Forest算法中的参数详解
- java mapstring_ object 遍历_ListMapString,Object使用Java代码遍历以获取String,Object的值...
- VS2010中 C++创建DLL图解
- smtplib python教程_Python使用poplib模块和smtplib模块收发电子邮件的教程
- 新高考不选物理可以学计算机吗,新高考选科中物理真的那么重要吗?没有选物理是不是完了?...
- python 面向对象编程简称_Python基础-面向对象编程
- 执行jar包,输出信息到文件
- Mysql优化之执行计划查看
- 树莓派安装MySQL数据库与卸载
- 神奇的css3(2)动画