#include #include #include void compute_forward (const char *string, unsigned int len, int occ[UCHAR_MAX + 1]) { int i; memset (occ, 0, (UCHAR_MAX + 1) * sizeof (int)); for (i = 0; i < len; i++) occ[(unsigned char) string[i]]++; } void compute_backward (const char *string, unsigned int len, int occ[UCHAR_MAX + 1]) { int i; memset (occ, 0, (UCHAR_MAX + 1) * sizeof (int)); for (i = len - 1; i >= 0; i--) occ[(unsigned char) string[i]]++; } int sumup_no_abs (int occ_diff[UCHAR_MAX + 1]) { int sum; int i; sum = 0; for (i = 0; i <= UCHAR_MAX; i++) { int d = occ_diff[i]; sum += (d >= 0 ? d : -d); } return sum; } int sumup_abs (int occ_diff[UCHAR_MAX + 1]) { int sum; int i; sum = 0; for (i = 0; i <= UCHAR_MAX; i++) sum += abs (occ_diff[i]); return sum; }