给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
提示:你可以假定该字符串只包含小写字母
解法一:参照哈希表的思想,做一个二维数组映射,
记录字符串中的字母出现的次数和位置,
最后查找二维数组中出现一次字母的最小位置;
int firstUniqChar(char * s){
int record[26][2];
int s_len=strlen(s);
int minPosition=INT_MAX;
memset(record,0,sizeof(record));
for(int i=0;i<s_len;i++){
if(record[s[i]-'a'][1]==0)
record[s[i]-'a'][1]=i;
record[s[i]-'a'][0]++;
}
for(int i=0;i<26;i++)
{
if(record[i][0]==1)
{
if(minPosition>record[i][1]){
minPosition=record[i][1];
}
}
}
if(minPosition==INT_MAX)
return -1;
return minPosition;
}
网友评论