aboutsummaryrefslogtreecommitdiff
path: root/break_palindrom.c
blob: 2a1f42841cf0231fda07e702705c0bd6036cfb1a (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
// 1328. Break a Palindrome
#include "leetcode.h"

/*
 * given a palindrome string of lowercase english letters 'palindrome' replace
 * exactly one character with any lowercase english letter so that the resulting
 * string is not a palindrome and that it is the lexicographically smallest one
 * possible. return the resulting string. if there is no way to replace a
 * character to make it not a palindrome, return an empty string.
 */

char *breakPalindrome(char *palindrome) {
  int n = strlen(palindrome);
  for (int i = 0; i < n / 2; ++i)
    if (palindrome[i] != 'a') {
      palindrome[i] = 'a';
      return palindrome;
    }
  palindrome[n - 1] = 'b';
  return n < 2 ? "" : palindrome;
}

int main() {
  char p1[] = "abccba", p2[] = "a";
  printf("%s\n", breakPalindrome(p1)); // expect: aaccba
  printf("%s\n", breakPalindrome(p2)); // expect: null
}