394:字符串解码(未完成)

This commit is contained in:
huangge1199 2021-04-23 19:01:54 +08:00
parent 0ea41af2a7
commit 7ab7f641a1
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,80 @@
//给定一个经过编码的字符串返回它解码后的字符串
//
// 编码规则为: k[encoded_string]表示其中方括号内部的 encoded_string 正好重复 k 注意 k 保证为正整数
//
// 你可以认为输入字符串总是有效的输入字符串中没有额外的空格且输入的方括号总是符合格式要求的
//
// 此外你可以认为原始数据不包含数字所有的数字只表示重复的次数 k 例如不会出现像 3a 2[4] 的输入
//
//
//
// 示例 1
//
// 输入s = "3[a]2[bc]"
//输出"aaabcbc"
//
//
// 示例 2
//
// 输入s = "3[a2[c]]"
//输出"accaccacc"
//
//
// 示例 3
//
// 输入s = "2[abc]3[cd]ef"
//输出"abcabccdcdcdef"
//
//
// 示例 4
//
// 输入s = "abc3[cd]xyz"
//输出"abccdcdcdxyz"
//
// Related Topics 深度优先搜索
// 👍 741 👎 0
package leetcode.editor.cn;
import java.util.Stack;
//394:字符串解码
public class DecodeString {
public static void main(String[] args) {
//测试代码
Solution solution = new DecodeString().new Solution();
//accaccacc
System.out.println(solution.decodeString("3[a2[c]]"));
//aaabcbc
System.out.println(solution.decodeString("3[a]2[bc]"));
// //accaccacc
// System.out.println(solution.decodeString("3[a2[c]]"));
// //abcabccdcdcdef
// System.out.println(solution.decodeString("2[abc]3[cd]ef"));
// //abccdcdcdxyz
// System.out.println(solution.decodeString("abc3[cd]xyz"));
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String decodeString(String s) {
Stack<String> stack = new Stack<>();
StringBuilder str = new StringBuilder();
while (s.charAt(0) >= 'a' && s.charAt(0) <= 'z') {
str.append(s.charAt(0));
if (s.length() == 1) {
return str.toString();
}
s = s.substring(1);
}
int num = Integer.parseInt(s.substring(0, s.indexOf("[")));
for (int i = 0; i < num; i++) {
str.append(decodeString(s.substring(s.indexOf("[") + 1, s.lastIndexOf("]"))));
}
return str.toString();
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,34 @@
<p>给定一个经过编码的字符串,返回它解码后的字符串。</p>
<p>编码规则为: <code>k[encoded_string]</code>,表示其中方括号内部的 <em>encoded_string</em> 正好重复 <em>k</em> 次。注意 <em>k</em> 保证为正整数。</p>
<p>你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。</p>
<p>此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 <em>k</em> ,例如不会出现像&nbsp;<code>3a</code>&nbsp;&nbsp;<code>2[4]</code>&nbsp;的输入。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>s = &quot;3[a]2[bc]&quot;
<strong>输出:</strong>&quot;aaabcbc&quot;
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>s = &quot;3[a2[c]]&quot;
<strong>输出:</strong>&quot;accaccacc&quot;
</pre>
<p><strong>示例 3</strong></p>
<pre><strong>输入:</strong>s = &quot;2[abc]3[cd]ef&quot;
<strong>输出:</strong>&quot;abcabccdcdcdef&quot;
</pre>
<p><strong>示例 4</strong></p>
<pre><strong>输入:</strong>s = &quot;abc3[cd]xyz&quot;
<strong>输出:</strong>&quot;abccdcdcdxyz&quot;
</pre>
<div><div>Related Topics</div><div><li></li><li>深度优先搜索</li></div></div>\n<div><li>👍 741</li><li>👎 0</li></div>