Introduction:
In this tutorial we are going to solve a very famous interview problem "first unique character in the string".
Problem Statement:
We have a string. and then we have to find very first character present in the string which is unique.
It means we have to return very first character of the string, whose frequency(count) is 1 in the string.
eg: string="hehemon"
Output: m
Solution:
In this type of problem we prefer hashmap to easily solve the problem. so what we are going to do is, first of all we are going to create a hashmap. and we will store the character as key and index of character as value.
Trick:
whenever the frequency of character is greater than 1. then we will make the value part of that character -1 in the hashmap. it means now this character is not unique. it's frequency is more than 1.
After iterating whole string, we will have a hashmap. In which we have characters and it's index. and if the frequency of character is more than one then we will simply make the index part of that character -1.
Now we will iterate over hashmap, and we will keep a min_index variable to get the minimum index, which is unique. and at the end the value of min_index will be our answer.
Full Code:
Note: we are taking char c for edge cases.
char firstUniqChar(string &str) {
char c='0';
map<char,int>m;
for(int i=0;i<str.size();i++){
if(m.find(str[i])!=m.end()){
auto it=m.find(str[i]);
it->second=-1;
}
else{
m.insert(make_pair(str[i],i));
}
}
int flag=0;
int min_index = INT_MAX;
for(auto it=m.begin();it!=m.end();it++){
if(it->second!=-1){
if(it->second<min_index){
min_index=it->second;
flag=1;
}
}
}
if(flag)
return str[min_index];
else{
return c;
}
Conclusion:
whenever you see string problems like this one. and you have no idea that how we can solve this problem. then hashmap is always an option for you. hashmap is easy and efficient. it reduces our time complexity.
Best of luck.
Comments
Post a Comment