diff --git a/longest-repeating-character-replacement/tigermint.kt b/longest-repeating-character-replacement/tigermint.kt new file mode 100644 index 0000000000..8a756a13e8 --- /dev/null +++ b/longest-repeating-character-replacement/tigermint.kt @@ -0,0 +1,27 @@ +/** +TC: O(26n) = O(n) +SC: O(26) = O(1) + */ +class Solution { + fun characterReplacement(s: String, k: Int): Int { + var left = 0 + val charToCount = mutableMapOf() + var maxFrequency = 0 + + for (right in s.indices) { + val added = s[right] + charToCount[added] = (charToCount[added] ?: 0) + 1 + + // 교체 횟수가 k를 넘으면 왼쪽을 당겨 윈도우 축소 + while ((right - left + 1) - charToCount.values.max() > k) { + val removed = s[left] + charToCount[removed] = charToCount.getValue(removed) - 1 + left++ + } + + maxFrequency = maxOf(maxFrequency, right - left + 1) + } + + return maxFrequency + } +} diff --git a/reverse-bits/tigermint.kt b/reverse-bits/tigermint.kt new file mode 100644 index 0000000000..19b81e4abb --- /dev/null +++ b/reverse-bits/tigermint.kt @@ -0,0 +1,15 @@ +/** +TC: O(32) = O(1) +SC: O(1) + */ +class Solution { + fun reverseBits(n: Int): Int { + var result = 0 + var num = n + repeat(32) { + result = (result shl 1) or (num and 1) + num = num ushr 1 + } + return result + } +}