leetcode(哈希表)
程序员文章站
2022-06-23 18:36:31
...
leetcode-387: 字符串中的第一个唯一字符
描述:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.
注意事项:您可以假定该字符串只包含小写字母。
思路:看到这个题,我第一反应是用映射来做,用映射先统计字符串中每个字符出现次数,再找出第一个字符次数==1的。有木有注意到题下面的注意事项呢?这就是说我们可以不必用映射(底层是二叉树这样的结构),只有a~z 26种可能,那就可以制造一个包含26个字母的数组,数组的每一位表示某字符对应出现的频率。比如索引为0的位置表示字母a出现的频次,索引为1的位置表示字母b出现的频次…
class Solution {
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;
}
}
上一篇: 批处理 远程控制