How to check if a string can be rearranged as palindrome in C

1 Answer

0 votes
#include <stdio.h>
#include <stdbool.h>

bool CanStringBeRearrangedAsPalindrome(const char str[]) {
    int ascii_count[256] = { 0 };

    for (int i = 0; str[i]; i++) {
        ascii_count[str[i]]++;
    }

    int odd = 0;
    for (int i = 0; i < 256; i++) {
        if (ascii_count[i] & 1) {
            odd++;
        }

        if (odd > 1) return false;
    }

    return true;
}

int main() {
    const char str[] = "abcdacdb";

    CanStringBeRearrangedAsPalindrome(str) ? puts("Yes") : puts("No");

    CanStringBeRearrangedAsPalindrome("abcca") ? puts("Yes") : puts("No");

    CanStringBeRearrangedAsPalindrome("abcb") ? puts("Yes") : puts("No");

   
}




/*
run:

Yes
Yes
No

*/

 



answered Sep 8, 2022 by avibootz
edited Sep 8, 2022 by avibootz

Related questions

...