Given a string, find the first character which is non -repetitive i.e that character must not be present anywhere else in the string.
With two different solutions.
Eg : Input : teeterson Output : r, as it is the first element which is non repetitive.
Solution 1 :
1) Scan the string from left to right and construct the count array. 2) Again, scan the string from left to right and check for count of each character, if you find an element who's count is 1, return it.
Time Complexity : O(2N)= O(N)
Space Complexity : O(N)
Solution 2 :
To reduce Time for searching , we can use Hashmap.
Benefit from previous solution:
to get count for 2,3 etc we can easily use this function with little modification
To search for count 1, no need to iterate array again.
map < int , character > m; map < int , character > : iterator it; void *getNonRepChar(char *str) { int *count = (int *)calloc(sizeof(int), NO_OF_CHARS); int i; for (i = 0; *(str+i); i++){ count[*(str+i)]++; m.insert(make_pair(count,*(str+i))); }//for ended return count; }//function ended it.find(1); if(it != end() ){ // element found character op = it->second ; printd (" %c has count %d" ,op,1); } else printf ("Not found Such element");
Time Complexity : O(N)
Space Complexity : O(N)
-IF YOU LIKE OUR EFFORT, PLEASE LIKE AND SHARE OUR FB-PAGE AND SITE