본문 바로가기

분류 전체보기378

문자열에서 첫 번째 고유 문자 찾기 주어진 문자열에서 첫 번째 고유 문자의 인덱스를 반환하세요. 고유 문자가 없으면 -1을 반환 fun firstUniqChar(s: String): Int { val frequency = IntArray(26) for (i in s.indices) { frequency[s[i] - 'a']++ } for (i in s.indices) { if (frequency[s[i] - 'a'] == 1) return i } return -1 } 2023. 10. 29.
문자열의 모든 순열 fun permute(str: String, l: Int, r: Int, result: MutableList) { if (l == r) result.add(str) else { for (i in l..r) { val swapped = str.toCharArray().apply { this[l] = this[i].also { this[i] = this[l] } }.joinToString("") permute(swapped, l + 1, r, result) } } } fun getAllPermutations(s: String): List { val result = mutableListOf() permute(s, 0, s.length - 1, result) return result } 2023. 10. 29.
가장 긴 공통 접두사 fun longestCommonPrefix(strs: Array): String { if (strs.isEmpty()) return "" strs.sort() val first = strs[0] val last = strs[strs.size - 1] var i = 0 while (i < first.length && first[i] == last[i]) i++ return first.substring(0, i) } 2023. 10. 29.
유효한 괄호 문자열 확인 fun isValidParentheses(s: String): Boolean { val stack = ArrayDeque() for (char in s) { when (char) { '(', '[', '{' -> stack.addLast(char) ')' -> if (stack.isEmpty() || stack.removeLast() != '(') return false ']' -> if (stack.isEmpty() || stack.removeLast() != '[') return false '}' -> if (stack.isEmpty() || stack.removeLast() != '{') return false } } return stack.isEmpty() } fun main() { println.. 2023. 10. 29.
최빈 단어 찾기 fun mostFrequentWord(s: String): Pair? { val words = s.split(' ') val frequencyMap = words.groupingBy { it }.eachCount() return frequencyMap.maxByOrNull { it.value } } fun main() { val (word, frequency) = mostFrequentWord("this is a sample program and it is a sample") ?: Pair("", 0) println("$word: $frequency") // "sample: 2" } 2023. 10. 29.
공백으로 단어 뒤집기 fun reverseWords(s: String): String { return s.split(' ').joinToString(" ") { it.reversed() } } fun main() { println(reverseWords("Hello World")) // "olleH dlroW" } 2023. 10. 29.