题目描述:
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
示例 1:
输入: s = “leetcode”
输出: 0
示例 2:
输入: s = “loveleetcode”
输出: 2
示例 3:
输入: s = “aabb”
输出: -1
提示:
1 <= s.length <= 105
s 只包含小写字母
class Solution { public int firstUniqChar(String s) { } }
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/first-unique-character-in-a-string
解题思路:
s字符串中所包含的字符一定属于26个字母,且题目中说明字符串中只包含小写字母;所以只需要设计一个对应26个字母的大小的数组,字母a对应数组的0下标(cout[ch - ‘a’])… ;遍历字字符串,将字符串中每个字母出现的次数在字母对应的数组位置记录下来;最后再次遍历字符串,字符对应位置的数组元素和1进行比较,第一个为1的元素就是字符串中的第一个唯一字符。
代码实现:
class Solution { public int firstUniqChar(String s) { int[] count = new int[26]; for(int i = 0; i < s.length(); i++){ char ch = s.charAt(i); count[ch-'a']++; } for(int i = 0; i < s.length(); i++){ char ch = s.charAt(i); if(count[ch - 'a'] == 1){ return i; } } return -1; } }