【发布时间】:2021-08-06 06:57:15
【问题描述】:
任务是将给定的括号字符串示例:“(())”设置为数字 0,1 和 -1。
如果给定的括号“(”在给定的字符串中有一对“)”,则数字 0 将是“(”的整数。
如果给定的括号“)”在给定的字符串中有一对“(”,则数字 1 将是“)”的整数。
如果它们都没有一对,或者更准确地说,如果它们在给定的字符串中没有闭合,则数字 -1 将是 "(" 或 ")" 的整数。
例如:
1.Input: 2.Input: 3.Input
(() ()) ((())(()))))
Output: Output: Output:
-101 01-1 0001100111-1-1
我尝试使用堆栈检查括号是否按正确的顺序,但我无法根据条件为它们设置值。
String parens="(())";
Stack<Character> s = new Stack<>();
char c;
for(int i=0;i<parens.length();i++) {
c=parens.charAt(i);
if(c=='(')
s.push(c);
else if(c==')') {
if(s.empty() || s.peek()!='(')
continue;
else
s.pop();
}
}
if(s.empty()) {
System.out.println("Correct");
}else {
System.out.println("Incorrect");
}
【问题讨论】:
-
这很难,因为您不知道前导
(是否匹配,基于字符串后面的匹配。您需要跟踪这些字符在“数字”中的位置,然后根据最后的结果返回并调整它们。 -
我也很好奇大括号是否可以匹配括号或者这两个需要独立跟踪。如果是后者,它会增加更多的复杂性。
-
@markspace 我认为大括号是一个错误。示例仅显示括号。
-
我会改正那个错字。谢谢你指出:)