Write an efficient C program to print all the duplicates and their counts in the input string
Algorithm: Let input string be “geeksforgeeks”
1: Construct character count array from the input string.
1: Construct character count array from the input string.
count[‘e’] = 4
count[‘g’] = 2
count[‘k’] = 2
……
count[‘g’] = 2
count[‘k’] = 2
……
2: Print all the indexes from the constructed array which have value greater than 0.
Solution
- C
- Python
# include <stdio.h># include <stdlib.h># define NO_OF_CHARS 256/* Fills count array with frequency of characters */void fillCharCounts(char *str, int *count){ int i; for (i = 0; *(str+i); i++) count[*(str+i)]++;}/* Print duplicates present in the passed string */void printDups(char *str){ // Create an array of size 256 and fill count of every character in it int *count = (int *)calloc(NO_OF_CHARS, sizeof(int)); fillCharCounts(str, count); // Print characters having count more than 0 int i; for (i = 0; i < NO_OF_CHARS; i++) if(count[i] > 1) printf("%c, count = %d \n", i, count[i]); free(count);}/* Driver program to test to pront printDups*/int main(){ char str[] = "test string"; printDups(str); getchar(); return 0;} |
Output:
s, count = 2 t, count = 3
Time Complexity: O(n)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
No comments:
Post a Comment