(LeetCode) First Unique Character in a String

First Unique Character in a String

  • 분류 : String
  • 난이도 : Easy

Problem

Given a string s, return the first non-repeating character in it and return its index. If it does not exist, return -1.

Example 1

1
2
Input: s = "leetcode"
Output: 0

Example 2

1
2
Input: s = "loveleetcode"
Output: 2

Example 3

1
2
Input: s = "aabb"
Output: -1

Constraints

  • 1 <= s.length <= 10^5
  • s consists of only lowercase English letters.

Solution

Exapnder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
fun firstUniqChar(s: String): Int {
var result = Int.MAX_VALUE

for (i in 97 until 123) {
var first = s.indexOfFirst { it == i.toChar() }
var last = s.indexOfLast { it == i.toChar() }

if (first == -1) {
continue
}

if (first == last) {
result = Math.min(result, first)
}
}

return if (result == Int.MAX_VALUE) {
-1
} else {
result
}
}
}

Point of Thinking

  • 주어지는 문자열 내의 중복을 제거하여 유니크한 값을 찾는 것은 의미가 없다.
  • 구하고자하는 것은 반복되지 않는 문자의 index를 찾는 것이다.
    • 주어진 문자열내의 첫번째 index와 마지막 index가 같다면 해당 문자는 unique하다고 볼 수 있다.
    • 위의 조건에 해당하는 문자열 중 가장 작은 index를 반환하면 Accpeted