返回 AI 资讯
社区讨论LinuxDo 最新

Leetcode每日一题 —— 1096. 花括号展开 II

佬友们中秋节快乐!! 力扣 LeetCode 1096. 花括号展开 II - 力扣(LeetCode) 1096. 花括号展开 II - 如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串,定义下面几条语法规则: 如果只给出单一的元素 x,那么表达式表示的字符串就只有 "x"。R(x) = {x} 例如,表达式 "a" 表示字符串 "a"。 而表达式 "w" 就表示字符串 "w"。 ... 思路 跟四…

内容摘要

作者:#魔法师 板块:#开发调优 佬友们中秋节快乐!! 力扣 LeetCode 1096. 花括号展开 II - 力扣(LeetCode) 1096. 花括号展开 II - 如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串,定义下面几条语法规则: * 如果只给出单一的元素 x,那么表达式表示的字符串就只有 "x"。R(x) = {x} * 例如,表达式 "a" 表示字符串 "a"。 * 而表达式 "w" 就表示字符串 "w"。 *... 思路 跟四则运算思路差不多,递归,根据优先级和符号依次运算。 花括号内,从左往右遍历。缓存now存还没结束的内容。 如果遇到{,找到对应的},然后递归它中间的内容,然后与当前缓存值连接。 如果遇到,,把缓存加到ans,重置当前缓存。 否则将缓存中的值依次与当前字符连接。 遍历结束后,如果缓存中还有值,加入到ans。 代码 class Solution { private char[] chars; public List<String> braceExpansionII(String expression) { chars = expression.toCharArray(); Set<String> ans = dfs(0, chars.length - 1); return ans.stream().sorted().toList(); } private HashSet<String> dfs(int left, int right) { int idx = left; HashSet<String> ans = new HashSet<>(); HashSet<Str

资讯来源

LinuxDo

原文链接

打开原文