프로그래밍/Algorithm

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

모지사바하 2015. 7. 27. 18:03

/**
* 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: Array[String]) {
println(validUniqueChar("abcdefghijklmn"))
}
}


문제를 풀면서 생각한점.


1. 자바였다면 이중 for loop 를 이용해서 금방 풀었을텐데..

2. 스칼라 재귀함수를 이용해서 풀어보자

3. 이중 루프가 아니라 한번의 재귀호출로 풀어보자

4. if 로 점철된 소스가 뭔가 조잡해보임..