导航
导航
文章目录
  1. 题目
  2. 翻译

LeetCode-387.First Unique Character in a String

题目

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.

Examples:
s = “leetcode”
return 0.

s = “loveleetcode”,
return 2.

Note: You may assume the string contain only lowercase letters.

翻译

给出一个字符串,找出第一个未重复的字符,并返回其下标。如果不存在,返回-1。
例如:
s = “leetcode”,返回0。
s = “loveleetcode”,返回2
注意:
你可以认为字符串只包含小写字母

第一个无重复字母,即只出现一次的所有字母中,位置最靠前的。
首先求出现次数:因为只有小写字母,利用一个长度为26的int数组,记录每个字母出现的次数。
然后求最靠前的:遍历数组,当值为1时即为无重复字符,所有满足条件的字母中,位置最靠前的即为所求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public int firstUniqChar(String s) {
int[] chars = new int[26];
int minIndex = s.length();

for (char c : s.toCharArray()) chars[c - 'a']++;

for (int i = 0; i < 26; i++) {
if (chars[i] == 1) {
int index = s.indexOf((char) ('a' + i));
if (index < minIndex) minIndex = index;
}
}

return minIndex == s.length() ? -1 : minIndex;
}
}