Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.
Examples:
s = “leetcode”
return 0.
s = “loveleetcode”,
return 2.
Note: You may assume the string contain only lowercase letters.
此题意思是找出字符串中第一次出现的字符(所以字符假设均为小写)所在的位置。
思路:先建一个字符数组(向量),遍历字符串所有字符,将其映射到字符数组(向量)中。即将每个字符s[i]映射到字符数组中的s[i]-‘a’位置。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int findUniqchar(string s)
{
int pos;
vector<int> nums(26);
for(vector<int>::size_type i=0;i<s.size();i++)//将字符映射到字符向量nums[]中
nums[s[i]-'a']++;
for(vector<int>::size_type i=0;i<s.size();i++)
{
if(nums[s[i]-'a']==1)
return i;
}
return -1;
}
int main()
{
int res;
string s1="loveleetcode";
res=findUniqchar(s1);
cout<<res<<endl;
return 0;
}