using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 括号匹配问题C#版本
/// 思路:使用栈实现,每碰到一个左括号,将左括号塞入栈中,每碰到一个右括号,从栈中判空,并取出一个左括号。最后,检查栈中是否有左括号。
/// Tip:利用栈的后进先出思路实现该问题,要注意判空条件,若使用C++语言可能需要实现栈。-- 酒馆笔记
/// </summary>
public class Program
{
public static void Main(string[] args)
{
string inputStr = "()())()";// "s(da)()das)()n)()as)()bi)()bia(sdy()hui)()asyhbd)as)())hb)d";
Console.WriteLine(CheckBracket(inputStr));
}
public static bool CheckBracket(string inputStr)
{
Stack<char> leftBracket = new Stack<char>();
for (int i = 0; i < inputStr.Length; i++)
{
if (inputStr[i] == '(')
{
leftBracket.Push(inputStr[i]);
}
else if (inputStr[i] == ')')
{
if (leftBracket.Count == 0 || '(' != leftBracket.Pop())
{
return false;
}
}
}
if (leftBracket.Count > 0)
{
return false;
}
return true;
}
}
括号匹配问题C#
最新推荐文章于 2023-02-26 23:09:06 发布