Elixir Largest String
defmodule LargestString do
def largest_string(s) do
s
|> String.to_charlist()
|> Enum.chunk_by(&(&1 in ~c"ab"))
|> Enum.map(&sort_segment/1)
|> List.flatten()
|> List.to_string()
end
defp sort_segment([c | _] = segment) when c in ~c"ab" do
Enum.sort(segment, :desc)
end
defp sort_segment(segment), do: segment
end
This builds the biggest valid string it can under the challenge rules by always choosing the best next character it is allowed to use.