题解 | #牛牛的字符串解码问题#
牛牛的字符串解码问题
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();
}
}
这个代码使用两个栈,一个用于处理数字,另一个用于处理字符。通过遍历输入字符串,根据括号的出现,动态地构建解码后的字符串。这种递归和栈的方法可以处理嵌套的情况,确保正确解码。最终返回解码后的字符串。
SHEIN希音公司福利 261人发布
