프로그래밍/Algorithm 105

같은 문자가 반복될 경우, 그 횟수를 사용해 문자열을 압축하는 메소드를 구현하라.

/** * Created by kwo2002 on 2015-08-03. */ object ZipString { def zipString(str: String): String = { def go(n: Int, cnt: Int, zipString: StringBuilder): String = { if (cnt == 1) { zipString.append(str.charAt(n)) } if (n >= str.length - 1) { if (cnt > 1) { zipString.append(cnt) } zipString.toString() } else { if (str.charAt(n) == str.charAt(n + 1)) { go(n + 1, cnt + 1, zipString) } else { if (cnt..

주어진 문자배열내의 공백을 모두 %20으로 바꾸는 메소드를 작성하라.

/** * Created by kwo2002 on 2015-07-30. */ object RelpaceSpace { def replaceSpace(cArr: Array[Char], n: Int): Array[Char] = { //새로운 배열 사이즈를 얻기 위한 loop def getNewArraySize(i: Int, newSize: Int): Int = { if (i >= n) newSize else { if (cArr(i) == ' ') { getNewArraySize(i + 1, newSize + 2) } else { getNewArraySize(i + 1, newSize) } } } def repChar(i: Int, i2: Int, newArr: Array[Char]): Array[Char] =..

문자열 두개를 받아 그 중 하나가 다른 하나의 순열인지 판단하라(2)

/** * Created by kwo2002 on 2015-07-29. * 문자열 두개를 받아 그 중 하나가 다른 하나의 순열인지 판단하라 */ object Permutation { def permutation1(a: String, b: String): Boolean = { if (a.trim.length != b.trim.length) { false } else { a.sorted.equalsIgnoreCase(b.sorted) } } def permutation2(a: String, b: String, p: Array[Char] => Array[Int]): Boolean = { if (a.trim.length != b.trim.length) { false } else { val aArr: Array[..

문자열 두개를 받아 그 중 하나가 다른 하나의 순열인지 판단하라

/** * Created by kwo2002 on 2015-07-29. * 문자열 두개를 받아 그 중 하나가 다른 하나의 순열인지 판단하라 */ object Permutation { def permutation1(a: String, b: String): Boolean = { if (a.trim.length != b.trim.length) { false }else { a.sorted.equalsIgnoreCase(b.sorted) } } def main(args: Array[String]) { println(permutation1("aaccbb", "bbccaa")) } } 1. 공백은 무시. 대소문자 무시2. 문자열 길이가 다르다면 무조건 순열이 아님.3. 문자열을 문자열.sorted 로 정렬한 후 비교..

문자열에 포함된 문자열이 유일한지 검사하는 알고리즘

/** * Created by kwo2002 on 2015-07-27. */ object UniqueChar { def validUniqueChar(text: String): Boolean = { def go(n: Int, seq: Int, text: String): Boolean = { if (n < text.length && seq < text.length) { if (text.charAt(n) == text.charAt(seq)) { false } else { go(n, seq + 1, text) } } else { if (n + 1 < text.length) { go(n + 1, n + 2, text) } else { true } } } go(0, 1, text) } def main(args: A..