C#是一种广泛使用的编程语言,在日常开发中经常需要处理字符串操作。其中,检查字符串中括号的匹配情况是一个常见的需求。但在处理时,开发者需要注意半角括号和全角括号的区别,以确保程序能正确识别和处理。
半角括号与全角括号的区别
在C#中,括号分为半角括号和全角括号两种形式。半角括号使用ASCII编码,分别为"("和")"。而全角括号使用Unicode编码,分别为"("和")"。这两种括号在视觉上非常相似,但在编程中需要区分对待。
半角括号是C#中最常见的括号形式,大多数开发者都习惯使用它们。而全角括号则更多出现在中文环境中,比如在中文文本中嵌入代码片段时。
检查字符串括号匹配
要检查字符串中括号的匹配情况,可以使用C#提供的内置方法。以下是一个示例代码:
$$
\begin{align*}
\text{bool IsBalanced(string input)} \\
\{ \\
\text{Stack
stack = new Stack();} \\
\text{foreach (char c in input)} \\
\{ \\
\text{if (c == '(' || c == '['|| c == '{' || c == '(' || c == '【' || c == '{')} \\
\{ \\
\text{stack.Push(c);} \\
\} \\
\text{else if (c == ')' || c == ']' || c == '}' || c == ')' || c == '】' || c == '}')} \\
\{ \\
\text{if (stack.Count == 0 || !IsMatchingPair(stack.Pop(), c))} \\
\{ \\
\text{return false;} \\
\} \\
\} \\
\} \\
\text{return stack.Count == 0;} \\
\}
\text{bool IsMatchingPair(char open, char close)} \\
\{ \\
\text{return (open == '(' && close == ')') || } \\
\text{(open == '[' && close == ']') || } \\
\text{(open == '{' && close == '}') || } \\
\text{(open == '(' && close == ')') || } \\
\text{(open == '【' && close == '】') || } \\
\text{(open == '{' && close == '}');} \\
\}
\end{align*}
$$
这个方法首先创建一个Stack
来存储遇到的左括号。然后遍历输入字符串,遇到左括号就压入栈,遇到右括号就检查是否与栈顶的左括号匹配。如果不匹配或者栈为空,则说明括号不平衡,返回false
。最后,如果遍历完成后栈为空,说明括号全部匹配,返回true
。
需要注意的是,该方法同时支