두 시나리오 중 하나로 인해 알고리즘을 강제로 중지할 경우 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)를 사용하는 해법도 있다. 이진 탐색을 활용한 해법은 이 책에 딸린 소스 코드에 들어 있다.