Be concise.
Be useful.
All contributions dictatorially edited by webmasters to match personal tastes.
Please do not paste any copyright violating material.
Please try to avoid dependencies to third-party libraries and frameworks.
List<int[]> a = new ArrayList<>();
int i, x, y, n = s.length(), c;
for (i = y = 0; i < n; ++i)
if (s.charAt(i) == '{') {
x = i + ++y;
while (x < n) {
c = s.charAt(x++);
if (c == '{') ++y;
else if (c == '}')
if (--y == 0) break;
}
a.add(new int[] { i, x - 1 });
}
var
i, k,B,Len: Integer;
List: array of integer;
c: Char;
const
S = '{.{.}.}.{.}';
begin
SetLength(List,Length(S));
Len:=Length(S);
for i:=1 to Len do begin
if S[i]='{' then begin
B:=0;
for k:=i+1 to Len do begin
c:=S[k];
if c='{' then
Inc(B)
else
if c = '}' then begin
if (B<=0) then Break;
Dec(B);
end;
end;
List[i-1]:=k-1;
end
else
List[i-1]:=-1;
end;
end.