C# (.NET Core), 231, 203, 200, 196196, 192 bytes
EDIT: Function is now at 185 bytes plus 18 for using System.Linq;
Thanks to BMO (for 1>0 being equal to true plus newline removal) and Mr. XCoder (for f=!f statements)!
EDIT2: Down to 182 bytes plus 18 for using System.Linq
thanks to dana for sharing a few golf tips!
EDIT3: Thanks to Embodiment of Ignorance for the int[] -> var, removal of short circuit && -> &, and changing up ToArray -> ToList! (178 bytes + 18 using)
EDIT4: Embodiment of Ignorance dropped 4 bytes by changing an assignment. Dummy me shoulda counted! Thanks again :D
p=>{var f=1>0;while(f){var t=p.Select(n=>n-48).ToList();p="";f=!f;var h=t.Count;forf;for(var j=0;j<h;j++j=0;j<t.Count;j++){if(j<hj<t.Count-1&t[j]==t[1+j]){p+=t[j]+t[1+j++];f=p+=t[j]+t[++j];f=!f;continue;}p+=t[j];}};return p;};