Easy
118886FavoriteShare
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.
哈希表法使用map:
C++:
/*
* @Autor: SourDumplings
* @Date: 2019-09-19 09:04:58
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/first-unique-character-in-a-string/
*/
class Solution
{
public:
int firstUniqChar(string s)
{
map<char, int> m;
for (auto &&c : s)
{
if (m.find(c) == m.end())
{
m[c] = 1;
}
else
{
++m[c];
}
}
int l = s.length();
for (int i = 0; i < l; i++)
{
char c = s[i];
if (m[c] == 1)
{
return i;
}
}
return -1;
}
};
哈希表法自己写哈希表:
Java:
import java.util.Arrays;
/*
* @Autor: SourDumplings
* @Date: 2019-09-19 09:09:24
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/first-unique-character-in-a-string/
*/
class Solution
{
public int firstUniqChar(String s)
{
int[] hashTable = new int[26];
Arrays.fill(hashTable, 0);
int l = s.length();
for (int i = 0; i < l; i++)
{
char c = s.charAt(i);
++hashTable[c - 'a'];
}
for (int i = 0; i < l; i++)
{
char c = s.charAt(i);
if (hashTable[c - 'a'] == 1)
{
return i;
}
}
return -1;
}
}