aboutsummaryrefslogtreecommitdiff
path: root/max_diff_even_odd_freq1.c
blob: d51e73b042959886ce253101cfe266fde1719622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 3442. Maximum Difference Between Even and Odd Frequency I
#include "leetcode.h"

/*
 * you are given a string 's' consisting of lowercase english letters. your task
 * is to find the minimum difference 'diff = a1 - a2' between the frequency of
 * characters 'a1' and 'a2' in the string such that 'a1' has an odd frequency in
 * the string, and 'a2' has an even frequency in the string. return this maximum
 * difference.
 */

int maxDifference(char *s) {
  int *freq = (int *)calloc(26, sizeof(int)), n = strlen(s);
  for (int i = 0; i < n; i++)
    freq[s[i] - 'a']++;
  int max = INT_MIN, min = INT_MAX;
  for (int i = 0; i < 26; i++) {
    if (max < freq[i] && freq[i] % 2)
      max = freq[i];
    if (min > freq[i] && !(freq[i] % 2) && freq[i])
      min = freq[i];
  }
  free(freq);
  return max - min;
}

int main() {
  char *s1 = "aaaaabbc", *s2 = "abcabcab";
  printf("%d\n", maxDifference(s1)); // expect: 3
  printf("%d\n", maxDifference(s2)); // expect: 1
}