Дана последовательность круглых фигурных и квадратных скобок. Определить, нет ли "пересечения" скобок. Например, последовательность (([)])() НЕправильна, а последовательность (([()])()) - правильна.
Нашел исходник:
Код
var s:string;
c:byte;
b:boolean;
begin
readln(s);
b:=true;
while b do
begin
b:=false;
c:=pos('[]',s);
if c>0 then
begin
delete(s,c,2);
b:=true;
end;
c:=pos('()',s);
if c>0 then
begin
delete(s,c,2);
b:=true;
end;
c:=pos('{}',s);
if c>0 then
begin
delete(s,c,2);
b:=true;
end;
end;
if length(s)>0 then writeln('No')
else writeln('Yes');
end.
Возникла еще одна сложность.
Если есть "пересечение", то при выводе строки на экран надо выделить цветом те скобки, из-за которых произошло "пересечение". Как реализовать?(с моими небольшими знаниями...)
Или тут придется по-другому писать? Может исходник со стеком видел кто...