394:字符串解码(未完成)
This commit is contained in:
parent
0ea41af2a7
commit
7ab7f641a1
80
LeetCode/src/main/java/leetcode/editor/cn/DecodeString.java
Normal file
80
LeetCode/src/main/java/leetcode/editor/cn/DecodeString.java
Normal 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)
|
||||
|
||||
}
|
34
LeetCode/src/main/java/leetcode/editor/cn/DecodeString.md
Normal file
34
LeetCode/src/main/java/leetcode/editor/cn/DecodeString.md
Normal 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> ,例如不会出现像 <code>3a</code> 或 <code>2[4]</code> 的输入。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>s = "3[a]2[bc]"
|
||||
<strong>输出:</strong>"aaabcbc"
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>s = "3[a2[c]]"
|
||||
<strong>输出:</strong>"accaccacc"
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>s = "2[abc]3[cd]ef"
|
||||
<strong>输出:</strong>"abcabccdcdcdef"
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 4:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>s = "abc3[cd]xyz"
|
||||
<strong>输出:</strong>"abccdcdcdxyz"
|
||||
</pre>
|
||||
<div><div>Related Topics</div><div><li>栈</li><li>深度优先搜索</li></div></div>\n<div><li>👍 741</li><li>👎 0</li></div>
|
Loading…
Reference in New Issue
Block a user