gpt4 book ai didi

c# - 如何在字符串中找到匹配的一对大括号?

转载 作者:太空狗 更新时间:2023-10-29 22:16:27 27 4
gpt4 key购买 nike

假设我有一个字符串 "(paid for) + (8 working hours) + (company rules)"。现在我想检查这个完整的字符串是否被括号括起来。基本上我想检查字符串是否是这样的:“((付费)+(8 个工作时间)+(公司规则))”。如果它已经被括号括起来,那么我将保持原样,否则我将对完整的字符串应用括号,以便输出为:“((付费)+(8个工作小时)+(公司规则)) “。通过计算括号的数量,我无法解决这个问题。

有人可以提出解决方案吗?

最佳答案

Stack 是个好主意,但是因为你想看看完整的字符串是否被括号包围,我建议你把遇到的左括号的 index堆栈 上。这样,每次从堆栈中弹出一个项目时,检查它是否为 0,这意味着对应于此闭括号的左括号位于字符串的开头。最后一个关闭括号的检查结果将告诉您是否需要添加括号。

示例:

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
}

关于c# - 如何在字符串中找到匹配的一对大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com