题解 | #牛牛的字符串解码问题#
牛牛的字符串解码问题
https://www.nowcoder.com/practice/e5658311e6d44b74872e843ba13ee290
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String decodeString (String s) { // write code here Stack<Integer> numStack = new Stack<>(); Stack<StringBuilder> strStack = new Stack<>(); StringBuilder currentStr = new StringBuilder(); int currentNum = 0; for (char ch : s.toCharArray()) { if (Character.isDigit(ch)) { currentNum = currentNum * 10 + (ch - '0'); } else if (ch == '[') { numStack.push(currentNum); currentNum = 0; strStack.push(currentStr); currentStr = new StringBuilder(); } else if (ch == ']') { int k = numStack.pop(); StringBuilder decodedStr = new StringBuilder(); for (int i = 0; i < k; i++) { decodedStr.append(currentStr); } currentStr = strStack.pop().append(decodedStr); } else { currentStr.append(ch); } } return currentStr.toString(); } }
这个代码使用两个栈,一个用于处理数字,另一个用于处理字符。通过遍历输入字符串,根据括号的出现,动态地构建解码后的字符串。这种递归和栈的方法可以处理嵌套的情况,确保正确解码。最终返回解码后的字符串。