Logo

Programming-Idioms

Generate a collection, a, of index-values, given the text, s, containing paired bracket values.

For example, "{ { } } { }" is `(0, 6) (2, 4) (8, 10)`.

https://en.wikipedia.org/wiki/Bracket_(mathematics)
https://en.wikipedia.org/wiki/Scope_(computer_science)
New implementation

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.

Other implementations
import java.util.ArrayList;
import java.util.List;
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.