더북(TheBook)

두 시나리오 중 하나로 인해 알고리즘을 강제로 중지할 경우 0부터 첫 번째 문자열 내 현재 문자의 인덱스까지의 부분 문자열이 가장 긴 공통 접두사다. 그렇지 않으면 배열의 첫 번째 문자열이 가장 긴 공통 접두사다. 코드로 나타내면 다음과 같다.

public static String longestCommonPrefix(String[] strs) {
  if (strs.length == 1) {
    return strs[0];
  }

  int firstLen = strs[0].length();

  for (int prefixLen = 0; prefixLen < firstLen; prefixLen++) {
    char ch = strs[0].charAt(prefixLen);
    for (int i = 1; i < strs.length; i++) {
      if (prefixLen >= strs[i].length()
         || strs[i].charAt(prefixLen) != ch) {
          return strs[i].substring(0, prefixLen);
      }
    } 
  }

  return strs[0];
}

이진 탐색(Binary Search) 같은 유명한 알고리즘이나 트라이(Trie)를 사용하는 해법도 있다. 이진 탐색을 활용한 해법은 이 책에 딸린 소스 코드에 들어 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.