I wanted to do it like this (in Erlang), but didn’t figure out how to. Nice.
I think you have a mistake: next_largest(351) should return 513, and you return 531.
That’s where I gave up with the swapping approach.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.