这题,=。= easy的。可以。思路就很简单了:iterate两遍,一遍统计字符出现数目,第二次遍历看对应字符出现的次数有多少,返回第一个出现只有一次的字符。
public int firstUniqChar(String s) {
char[] cache = s.toCharArray();
int[] counters = new int[26];
for (char c : cache) {
counters[c - 'a']++;
}
for (int i = 0; i < cache.length; i++) {
if (counters[cache[i] - 'a'] == 1) return i;
}
return -1;
}
用size为26的数组主要是题目说了可以假设string里面就是只有lower case letters.