카테고리 없음
[Go] leetcode 387. First Unique Character in a String
하루설렘
2023. 2. 12. 03:02
Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1.
Example 1:
Input: s = "leetcode"
Output: 0
Example 2:
Input: s = "loveleetcode"
Output: 2
Example 3:
Input: s = "aabb"
Output: -1
Constraints:
- 1 <= s.length <= 105
- s consists of only lowercase English letters.
# Approach
주어진 문자열을 돌면서, 각 문자마다, 그 이후에 있는 동일한 문자를 찾는다.
이미 찾았던 문자는 map에 저장하고 for문에서 동일한 문자가 나오면 continue하는 방식으로 한다.
# Complexity
- Time complexity: O(N^2)
N + (N-1) + (N-2) ... + 1 ▶ (N+1) * N / 2
# Code
package main
import "strings"
func firstUniqChar(s string) int {
checkMap := map[rune]struct{}{}
for i, r := range s {
if _, ok := checkMap[r]; ok {
continue
}
nextIndex := strings.IndexRune(s[i+1:], r)
if nextIndex == -1 {
return i
}
checkMap[r] = struct{}{}
}
return -1
}