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.
record XY(int x, int y) {}
List<XY> a = new ArrayList<>();
int x, y, m = s.length(), n, c;
for (x = 0; x != m; ++x)
if (s.charAt(x) == '{')
for (y = x + (n = 1); y != m; ++y)
if ((c = s.charAt(y)) == '{') ++n;
else if (c == '}' && --n == 0) {
a.add(new XY(x, y));
break;
}
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.
a = []
x, m = 0, len(s)
while x != m:
if s[x] == '{':
y = x + (n := 1)
while y != m:
match s[y]:
case '{': n += 1
case '}':
if not (n := n - 1):
a.append((x, y))
break
y += 1
x += 1