Позиции скобок в математическом выражении - C#
Формулировка задачи:
Дана строка с математическим выражением, необходимо посчитать количество строк, а также записать по парно позиции открытых и закрытых скобок
Не получается именно часть связанная с позицией скобок
Решение задачи: «Позиции скобок в математическом выражении»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication210
{
class Program
{
static void Main(string[] args)
{
var expression =@"
namespace ConsoleApplication210
{
class Program
{
static void Main(string[] args)
{
}
}
}";
foreach (var b in GetBrackets(expression, '{', '}'))
Console.WriteLine(b);
//
Console.ReadLine();
}
static IEnumerable<Bracket> GetBrackets(string expr, char openBracket, char closeBracket)
{
var stack = new Stack<Bracket>();
var chars = expr.ToCharArray();
for(int i=0;i<chars.Length;i++)
{
if (chars[i] == openBracket)
stack.Push(new Bracket{OpenPos=i});
if (chars[i] == closeBracket)
{
var b = stack.Pop();
b.ClosePos = i;
yield return b;
}
}
}
}
class Bracket
{
public int OpenPos { get; set; }
public int ClosePos { get; set; }
public override string ToString()
{
return string.Format("Open: {0} Close: {1}", OpenPos, ClosePos);
}
}
}