У меня есть список следующих символов класса Token:
3 ( 16 ) 23 ( 24 ( 40 ) 50 ( 66 ) 76 ) 83 ( 88 ( 104 ) 127 )
Мое требование состоит в том, чтобы найти пару скобок в этом списке. В списке пары скобок: 3,16; 24,40; 50,66; 23,76; 88 104; 83 127.
Я пытаюсь сделать это со следующим подходом:
public static Dictionary<int,int> GetPair(List<Token> data)
{
List<Token> token = data;
var pair = new Dictionary<int, int>();
int startIndex = -1;
int currentPosition = -1;
int finalIndex = -1;
foreach (var item in token)
{
if (item.TokenValue == "(" && (currentPosition == -1 || currentPosition>startIndex) )
{
startIndex = item.TokenID;
currentPosition = startIndex;
}
if (item.TokenValue == ")")
{
finalIndex = item.TokenID;
currentPosition = finalIndex;
pair.Add(startIndex, finalIndex);
}
}
return pair;
}
public class Token
{
public int TokenID { get; set; }
public string TokenValue { get; set; }
}
Я застрял в поиске позиции «23 («, потому что в списке есть еще одна открывающая скобка, и она заменяет ее на «24 («». Пожалуйста, помогите мне исправить логику здесь ??