Post

longest-common-prefix

LongestCommonPrefix

문제


  1. 사전순으로 문자열이 정렬하면 중간은 반드시 같은 문자열이 있다는 것을 알 수 있기 때문에 맨 첫번째와 마지막 인덱스의 값만 서로 공통된 값이 있는지 체크하면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fun longestCommonPrefix(strs: Array<String>): String {
  if (strs.size == 1) {
    return strs[0]
  }
  var commonPreFixIndex = 0
  strs.sort()

  while (true) {
    val firstStrChar = strs[0].getOrNull(commonPreFixIndex) ?: break
    val lastStrChar = strs[strs.size - 1].getOrNull(commonPreFixIndex) ?: break

    if (firstStrChar == lastStrChar) {
      commonPreFixIndex++
    } else {
      break
    }
  }

  if (commonPreFixIndex == 0) {
    return ""
  }

  return strs[0].substring(0, commonPreFixIndex)
}


This post is licensed under CC BY 4.0 by the author.