
这题,=。= 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.
本文介绍了一种简单有效的算法,用于在字符串中查找第一个仅出现一次的字符。通过两次遍历,首先统计每个字符的出现次数,然后再次遍历找到首个出现次数为一的字符。使用大小为26的数组优化字符计数,适用于仅包含小写字母的字符串。
1万+

被折叠的 条评论
为什么被折叠?



