LC-1096. 花括号展开 II(回溯)
创始人
2024-05-30 01:32:24
0

1096. 花括号展开 II

难度困难122

如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。

花括号展开的表达式可以看作一个由 花括号逗号小写英文字母 组成的字符串,定义下面几条语法规则:

  • 如果只给出单一的元素

    x
    

    ,那么表达式表示的字符串就只有

    "x"
    

    R(x) = {x}
    
    • 例如,表达式 "a" 表示字符串 "a"
    • 而表达式 "w" 就表示字符串 "w"
  • 当两个或多个表达式并列,以逗号分隔,我们取这些表达式中元素的并集。

    R({e_1,e_2,...}) = R(e_1) ∪ R(e_2) ∪ ...
    
    • 例如,表达式 "{a,b,c}" 表示字符串 "a","b","c"
    • 而表达式 "{{a,b},{b,c}}" 也可以表示字符串 "a","b","c"
  • 要是两个或多个表达式相接,中间没有隔开时,我们从这些表达式中各取一个元素依次连接形成字符串。

    R(e_1 + e_2) = {a + b for (a, b) in R(e_1) × R(e_2)}
    
    • 例如,表达式 "{a,b}{c,d}" 表示字符串 "ac","ad","bc","bd"
  • 表达式之间允许嵌套,单一元素与表达式的连接也是允许的。

    • 例如,表达式 "a{b,c,d}" 表示字符串 "ab","ac","ad"
    • 例如,表达式 "a{b,c}{d,e}f{g,h}" 可以表示字符串 "abdfg", "abdfh", "abefg", "abefh", "acdfg", "acdfh", "acefg", "acefh"

给出表示基于给定语法规则的表达式 expression,返回它所表示的所有字符串组成的有序列表。

假如你希望以「集合」的概念了解此题,也可以通过点击 “显示英文描述” 获取详情。

示例 1:

输入:expression = "{a,b}{c,{d,e}}"
输出:["ac","ad","ae","bc","bd","be"]

示例 2:

输入:expression = "{{a,z},a{b,c},{ab,z}}"
输出:["a","ab","ac","z"]
解释:输出中 不应 出现重复的组合结果。

提示:

  • 1 <= expression.length <= 60
  • expression[i]'{''}'',' 或小写英文字母组成
  • 给出的表达式 expression 用以表示一组基于题目描述中语法构造的字符串
class Solution {TreeSet s = new TreeSet<>();public List braceExpansionII(String expression) {dfs(expression);return new ArrayList<>(s);}public void dfs(String exp){int j = exp.indexOf('}');//首先找到第一个右花括号的位置 jif(j == -1){//如果找不到,说明 exp 中没有右花括号,即 exp 为单一元素s.add(exp);return;}// 否则,我们从位置 j 开始往左找到第一个左花括号的位置 iint i = j;while(exp.charAt(i) != '{') i--;String a = exp.substring(0, i); // 前缀String c = exp.substring(j + 1); // 后缀for(String b : exp.substring(i+1, j).split(",")){// 依次遍历花括号内的bi,拼接成新表达式递归处理dfs(a+b+c);}}
}

相关内容

热门资讯

山东移动泰安分公司筑牢反诈防线... 转自:新华财经在电信网络诈骗日益猖獗的当下,利用“猫池”(GOIP)设备实施诈骗的手段严重威胁人民群...
有色金属ETF(512400)... 5月14日,南方中证申万有色金属ETF(512400)收盘涨0.75%,成交额9079.29万元。有...
军工ETF易方达(512560... 5月14日,易方达中证军工ETF(512560)收盘跌0.46%,成交额4596.39万元。军工ET...
调研速递|[公司名称未提及]接...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 近日,[公司名称未提...
粤宏远A涨2.80%,成交额1... 5月14日,粤宏远A涨2.80%,成交额1.96亿元,换手率7.07%,总市值28.08亿元。异动分...
高盛:将欧洲斯托克600指数未...   高盛将欧洲斯托克600指数(STOXX 600 Index)未来12个月的目标从520点上调至5...
创业板ETF南方(159948... 5月14日,南方创业板ETF(159948)收盘涨1.02%,成交额4780.91万元。创业板ETF...
“阳光普照 爱满人间”公益项... 近日,“阳光普照 爱满人间”——关爱老人儿童公益项目在青浦区多个社区及养老机构开展系列活动,通过健...
康欣新材涨4.61%,成交额1... 5月14日,康欣新材涨4.61%,成交额1.53亿元,换手率5.03%,总市值30.52亿元。异动分...
1.2万余名群众加入这个队伍,... 转自:中国长安网4月30日,在四川省内江市资中县“护航甜城2025”防汛救灾暨应急救援综合实战演练现...
巫溪红池坝镇:“苦药材”铺就“... 中新网重庆新闻5月14日电 近日,在巫溪红池坝镇渔沙村300亩黄连种植基地里,药农们正趁着好时节除草...
挂“洋”头   “新西兰羊奶初乳高钙粉”,实际上产于江西宜春;“澳洲品牌蓝胖子牛奶粉”罐体包装全是英文,实则在安...
中企助力伊拉克打造“智慧油田” 01:34在位于伊拉克首都巴格达的振华石油控股有限公司(以下简称“振华石油”)东巴油田中心处理站内,...
秘望男士控油爽肤沐浴露成为假期... 转自:衡水日报 如今,越来越多的人选择一种更为惬意的度假方式。他们会前往城郊,住进一家小而干净的民宿...
商南县检察院:“四进四讲” 让... 连日来,商洛市商南县检察院以第五个“民法典宣传月”为契机,紧扣“美好生活·民法典相伴”主题,创新开展...
吉木萨尔县启动水电气行业价格与... 近日,为进一步优化营商环境,切实减轻企业和群众负担,提升人民群众满意度,吉木萨尔县市场监督管理局积极...
警惕强对流!今天下午河南多地阵... 18日起高温范围扩大 热力加码昨天中西部、西北部部分地区出现了35℃以上的高温天气,林州达到40.2...
全国助残日“京鹰”来了 北京市... 5月14日上午,全市首支以残疾人为主体的无人机操控员团队——“京鹰飞手队”正式亮相。这支由30名残疾...
业绩分化加剧 头部效应凸显 2025年第一季度,各大上市车企的业绩呈现明显分化,汽车行业内部洗牌加剧,头部车企与尾部阵营的业绩差...
国家铁路局局长费东斌会见哥伦比... 人民财讯5月14日电,2025年5月13日,国家铁路局局长费东斌在北京会见了哥伦比亚交通部长罗哈斯。...