포스트

Longest Common Prefix

LeetCode 14. Longest Common Prefix

원문

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string “”.

풀이

주어진 문자열 중 가장 짧은 것의 길이만큼 순회하는데, 이때 그 안에서 문자열을 순회하며 다른 문자가 나온다면 그 이전위치까지의 문자열을 반환한다.
순회를 모두 마칠 때까지 다른 문자가 나오지 않는다면 그때까지의 문자열을 반환한다.

코드

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = list()

        for i in range(min(map(len, strs))):
            letter = strs[0][i]
            for j in range(1, len(strs)):
                if strs[j][i] != letter:
                    return ''.join(result)
                    break
            else:
                result.append(letter)

        return ''.join(result)

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
    public String longestCommonPrefix(String[] strs) {
        StringBuilder sb = new StringBuilder();
        int n = 300;

        for (String str: strs) {
            n = Math.min(n, str.length());
        }

        for (int i = 0; i < n; i++) {
            char target = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (strs[j].charAt(i) != target) {
                    return sb.toString();
                }
            }
            sb.append(target);
        }

        return sb.toString();
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.