61 lines
1.2 KiB
C++
61 lines
1.2 KiB
C++
/*
|
|
Description: Given a string 's', return the index of the first unique character from the string. If not found, return -1
|
|
|
|
Time Complexity: O(n) where n is the length of the string
|
|
*/
|
|
#include <iostream>
|
|
#include <map>
|
|
using namespace std;
|
|
|
|
//function starts
|
|
int firstUniqChar(string s)
|
|
{
|
|
//declare a map to store the frequency of the character
|
|
map<char, int> m;
|
|
//storing the character and its frequency in the map for every character in the string
|
|
for (char c : s)
|
|
{
|
|
m[c]++;
|
|
}
|
|
//the frequency of the non-repreating or unique character will be 1
|
|
//1 indicates that it had appeared only once in the string
|
|
//since we want to search from the beginning of the string
|
|
//use for loop from beginning of the string
|
|
//to check if that character appeared for a single time
|
|
//if yes, return the index
|
|
for (int i = 0; i < s.size(); i++)
|
|
{
|
|
if (m[s[i]] == 1)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
//main starts
|
|
int main()
|
|
{
|
|
string s;
|
|
cout << "Enter a string: \n";
|
|
getline(cin, s);
|
|
cout << firstUniqChar(s);
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
Example 1:
|
|
|
|
Input: s = "leetcode"
|
|
Output: 0
|
|
|
|
Example 2:
|
|
|
|
Input: s = "loveleetcode"
|
|
Output: 2
|
|
|
|
Example 3:
|
|
|
|
Input: s = "aabb"
|
|
Output: -1
|
|
*/ |