Skip to content

Instantly share code, notes, and snippets.

@benaadams
Created October 16, 2020 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benaadams/17c2d4376338b75309c4d919adcb2714 to your computer and use it in GitHub Desktop.
Save benaadams/17c2d4376338b75309c4d919adcb2714 to your computer and use it in GitHub Desktop.
public static int Entropy(this string s)
{
if (string.IsNullOrEmpty(s)) return 0;
var array = ArrayPool<char>.Shared.Rent(s.Length);
s.CopyTo(0, array, 0, s.Length);
var span = array.AsSpan(0, s.Length);
span.Sort();
var last = -1;
var count = 0;
foreach (var c in span)
{
if (c == last) continue;
last = c;
count++;
}
ArrayPool<char>.Shared.Return(array);
return count;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment