X

LEETCODE 387. First Unique Character in a String 解题思路分析

题目大意:

字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项:您可以假定该字符串只包含小写字母。


如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=387

解题思路分析:

当我们看到题目描述中存在重复字符或者字符数量这类关键词时,应下意识想到使用字符数量统计数组,即遍历一遍字符串,对其进行预处理,查看字符串中每种字符存在的数量。本题也不例外,在统计完每种字符的数量之后,我们再遍历一遍字符串,查看每个字符出现的次数,当找到第一个出现次数为0的字符时,当前下标即是返回结果。

此外,在做字符串题目时,将字符串转化为字符数组会提高解题效率。

实现代码:

public int firstUniqChar(String s) {
    // 为了提高效率,将字符串转化为字符数组
    char[] arr = s.toCharArray();
    // 统计字符串中每种字符出现的次数
    int[] count=new int[26];
    for(int i=0;i<s.length();i++){
        count[arr[i]-'a']++;
    }
    // 查看每个字符出现的次数
    for(int i=0;i<s.length();i++){
        // 如果当前字符出现次数为1,返回当前下标
        if(count[arr[i]-'a']==1){
            return i;
        }
    }
    return -1;
}

本题解法执行时间5ms。

Runtime: 5 ms, faster than 94.51% of Java online submissions for First Unique Character in a String.

Memory Usage: 40.1 MB, less than 5.71% of Java online submissions for First Unique Character in a String.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: https://leetcode.jp/leetcode-387-first-unique-character-in-a-string-解题思路分析/
Categories: leetcode
kwantong: