GitHub:https://github.com/biezhihua/LeetCode
题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
解法
很简单的解法,因为只包含字母(26),所以可以用int
数组作为简单的哈希表。
@Test
public void test() {
Assert.assertEquals(0, firstUniqChar("leetcode"));
Assert.assertEquals(2, firstUniqChar("loveleetcode"));
}
public int firstUniqChar(String s) {
int freq[] = new int[26];
for (int i = 0; i < s.length(); i++)
freq[s.charAt(i) - 'a']++;
for (int i = 0; i < s.length(); i++)
if (freq[s.charAt(i) - 'a'] == 1)
return i;
return -1;
}