program RemoveAdjDuplicatesProgram;
function RemoveAdjacentDuplicates(s: string): string;
var
stack: string;
i: integer;
begin
stack := '';
for i := 1 to Length(s) do
begin
if (Length(stack) > 0) and (stack[Length(stack)] = s[i]) then
Delete(stack, Length(stack), 1) { pop }
else
stack := stack + s[i]; { push }
end;
RemoveAdjacentDuplicates := stack;
end;
var
s: string;
begin
s := 'abbacccada';
WriteLn(RemoveAdjacentDuplicates(s)); { prints: cada }
end.
(*
run:
cada
*)