欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }
}