题目大意:
字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -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-解题思路分析/