On Friday, 10 December 2021 at 13:22:58 UTC, Matheus wrote:
My C way of thinking while using D: import std; string stripsemicolons(string input){ char[] s = input.dup; int j=0; for(int i=0;i<input.length;++i){ if(s[i] == ';'){ continue; } s[j++] = s[i]; } s.length = j; return s.idup; }
Oooh, finally someone suggested to preallocate storage for all these reinventions of the wheel :D
I would suggest instead of the final idup checking the length and only duplicating if certain waste threshold is broken, otherwise just doing https://dlang.org/phobos/std_exception.html#assumeUnique (or a cast to string). The result is unique either way.
Threshold could be relative for short strings and absolute for long ones. Makes little sense reallocating if you only waste a couple bytes, but makes perfect sense if you've just removed pages and pages of semicolons ;)
Be interesting to see if this thread does evolve into a SIMD search...