function str=disp(p)
% collect - collect like terms in ppoly objects
%
%    p=collect(p)
%
%   p - a ppoly object

% Copyright (c) Dingyu Xue, Northeastern University, China
% Last modified 18 May, 2022 
   np=p.na; p=p.a; 
   if isempty(np), p=0; np=0; end
   P=''; [np,ii]=sort(np,'descend'); p=p(ii); 
   for i=1:length(p)
      P=[P,'+',num2str(p(i)),'*s^{',num2str(np(i)),'}'];
   end
   P=P(2:end); P=strrep(P,'s^{0}',''); P=strrep(P,'+-','-'); 
   P=strrep(P,'^{1}',''); P=strrep(P,'+1*s','+s'); 
   P=strrep(P,'*+','+'); P=strrep(P,'*-','-');
   P=strrep(P,'-1*s','-s'); nP=length(P); 
   if nP>=3 && isequal(P(1:3),'1*s'), P=P(3:end); end
   if P(end)=='*', P(end)=''; end 
   if nargout==0, disp(P), else, str=P; end
end
