题目:
思路:
将字符串压栈,如果是单独一个“(”,那么继续压,如果碰到了“)”,说明“(”已经输入完毕了,此时栈的大小就是左括号的数量,此时每输入一个右括号,就出一次栈,记录一次站内字符数,然后连乘,直到全部出栈。
代码:
package xiaozhao2018.jingdong;
import java.util.*;
public class Main1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String str = sc.nextLine();
char[] s = str.toCharArray();
Stack<Character> stack = new Stack<>();
int num = 1;
for(int i = s.length - 1; i >= 0; i--) {
if(s[i] == ')'){
stack.push(s[i]);
} else {
num *= stack.size();
stack.pop();
}
}
System.out.println(num);
}
}
}
本文介绍了一种使用栈解决括号匹配问题的算法。通过逆向遍历字符串,并利用栈来跟踪左括号的数量,每遇到一个右括号就计算当前栈内的字符数并更新最终结果。该方法适用于字符串中括号的配对计数。
868

被折叠的 条评论
为什么被折叠?



