반응형
문제
Given a string s, return the first non-repeating character in it and return its index. If it does not exist, return -1.
반복되는않은 char의 위치를 Int값으로 리턴해야합니다. 만약 반복되는 char들만있다면 -1을 리턴합니다. 반복되는않은 char이 여러개라면 가장 먼저나온 char의 위치를 리턴합니다.
예시
풀이
이문제에서는 hashmap을 활용하겠습니다.
위와같이 input값인 s의 문자하나하나 for loop로 빈 hashmap에 key value로 들어갑니다. hashmap에 key 값으로 문자들이 들어가고 value로 string에 들어있는 key 값의 문자 갯수가 들어갑니다.
map의 특징으로 value값은 겹칠수있지만 key 값은 하나만 존재할수있습니다. 그러므로 만약 반복되지않은 key값이 나오면 hashmap에 새로 추가가되지만, 반복된 값이라면 value에 1을 더하도록 만들어 주겠습니다.
위와 같이 반복되지않은 키값들은 value가 1로 나타나고 l처럼 두번 반복된key값은 value가 2로 나타나게 됩니다.
class Solution {
fun firstUniqChar(s: String): Int {
val count = HashMap<Char, Int>() //비어있는 hashmap을 만들어둡니다.
val n = s.length //string에 들어있는 문자갯수
for (i in 0 until n) { //문자갯수 만큼 반복
val c = s[i]// i 위치에있는 문자
count[c] = count.getOrDefault(c, 0) + 1 //getOrDefault는 c를 찾고 없으면 0을 리턴하고 있으면 +1을 하게됩니다.
Log.d("TAGG","val $c = ${count[c]}")
}
for (i in 0 until n) {
if (count[s[i]] == 1) return i //key의 value가 1인 값중 가장 앞에있는 값을 찾습니다.
}
return -1 //겹치는 값만있다면 -1을 리턴
}
}
반응형
'개발공부 > LeetCode' 카테고리의 다른 글
[Kotlin]String에 특수문자 제거, 띄어쓰기 제거(스페이스 제거), String 거꾸로 뒤집기, 소문자로변환 LeetCode :Valid PalindromeSolution (0) | 2021.06.24 |
---|---|
[Kotlin] map, hashmap 같은지 비교하기 LeetCode: Valid Anagram (0) | 2021.06.22 |
[Kotlin] LeetCode: PlusOne 쉬운 풀이 해설 (0) | 2021.06.14 |
[Kotlin] LeetCode: Intersection of Two Arrays IISolution 풀이 (0) | 2021.06.11 |
[Kotlin] Array 에 같은 숫자 찾기, HashMap활용 풀이 - LeetCode: Single Number (0) | 2021.06.10 |