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.
Subscribe to see which companies asked this question.
既然题目写明是小写字母,我们可以创建一个length为26的数组,先遍历字符串记录每个字母出现的频数,再找出第一个在字符串中出现,频数为1的字母,返回其index。记录频数遍历一遍字符串,寻找频数为1遍历一遍字符串,时间复杂度为两个O(n)。AC:
public class Solution {
public int firstUniqChar(String s) {
char[] alphabet = new char[26];
for(int i=0;i<s.length();i++){
alphabet[s.charAt(i)-'a']++;
}
for(int i=0;i<s.length();i++){
if(alphabet[s.charAt(i)-'a']==1)return i;
}
return -1;
}
}