Problem From.
https://leetcode.com/problems/permutation-in-string/
오늘 문제는 s1 의 순열이 s2 안에 포함되어있는지 확인하는 문제였다.
이 문제는 brute force 로 풀수도 있지만, 더 간단하게 풀기 위해서, s1 의 문자들이 몇번 나왔는지 map 에 넣어두고 s2를 앞에서부터 s1 의 길이만큼씩 보면서, 그 안에 나온 횟수가 map 안에 들어있는 횟수와 같으면 true 를 리턴하게 만들었다.
class Solution {
fun checkInclusion(s1: String, s2: String): Boolean {
val map = hashMapOf<Char, Int>()
s1.forEach {
map.put(it, map.getOrDefault(it,0) + 1)
}
for(i in 0 .. s2.length - s1.length) {
val slide = s2.substring(i until i + s1.length)
slide.forEach {
val cnt = map.getOrDefault(it, 0)
if(cnt > 1) {
map.put(it, map.get(it)!! - 1)
}
if(cnt == 1) {
map.remove(it)
}
}
if(map.size == 0) return true
map.clear()
s1.forEach {
map.put(it, map.getOrDefault(it,0) + 1)
}
}
return false
}
}