How to check if lowercase and uppercase characters in a string are in same order with C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
      
bool lowercase_uppercase_characters_same_order(char s[])  { 
   
    int len = strlen(s);
     
    char *lower_s = (char *)malloc((len * sizeof(char)) + 1);
    char *upper_s = (char *)malloc((len * sizeof(char)) + 1);
   
    for (int i = 0, ui = 0, li = 0; i < len; i++) { 
        if (s[i] >= 65 && s[i] <= 90) {
            upper_s[ui++] = s[i]; 
        }
		if (s[i] >= 97 && s[i] <= 122) {
            lower_s[li++] = s[i]; 
		}
    } 
     
    int i = 0;
    while (upper_s[i]) {
        upper_s[i] = tolower(upper_s[i]);
        i++;
    }
   
    bool b = false;
    if (strcmp(lower_s, upper_s) == 0)
        b = true;
 
    free(lower_s);
    free(upper_s);
      
    return b;
} 
   
int main() 
{                       
    char s[] = "cCPproRO"; // cproCPRO
   
    lowercase_uppercase_characters_same_order(s) ? puts("Yes") : puts("No"); 
   
    return 0; 
} 
 
 
 
/*
run:
 
Yes
 
*/

 



answered Oct 31, 2019 by avibootz
edited Nov 11, 2019 by avibootz
...