假设我有一个字符串"(付费)+(8个工作小时)+(公司规则)".现在我想检查这个完整的字符串是否用括号括起来.基本上我想检查字符串是否是这样:"((付费)+(8个工作小时)+(公司规则))".如果它已被括号括起来,那么我将原样保留,否则我将括号应用于整个字符串,以便输出为:"((付费)+(8个工作小时)+(公司规则)) ".通过计算括号的数量,我无法解决这个问题.
有人可以建议一个解决方案?
Bot*_*000 10
该Stack是个好主意,但你想看看完整的串用括号包围,我建议你把指数上遇到的开括号中Stack.这样,每当你在堆栈上弹出一个项目时,检查它是否是0,这意味着对应于这个结束paren的开始paren是在字符串的开头.对最后一次关闭paren的检查结果将告诉您是否需要添加parens.
例:
String s = "((paid for) + (8 working hours) + (company rules))";
var stack = new Stack<int>();
bool isSurroundedByParens = false;
for (int i = 0; i < s.Length; i++) {
switch (s[i]) {
case '(':
stack.Push(i);
isSurroundedByParens = false;
break;
case ')':
int index = stack.Any() ? stack.Pop() : -1;
isSurroundedByParens = (index == 0);
break;
default:
isSurroundedByParens = false;
break;
}
}
if (!isSurroundedByParens) {
// surround with parens
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14910 次 |
| 最近记录: |