코딩테스트 준비/leetcode

14. Longest Common Prefix

MAKGA 2021. 8. 9. 21:20
320x100

https://leetcode.com/problems/longest-common-prefix/

 

Longest Common Prefix - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문자열이 여러개 주어졌을 때, 그 문자열들 중에서 가장 긴 공통 접두사문자열을 찾는 문제다.

풀이법으로는

 

1. 문자열 중 가장 짧은 길이를 찾는다.

2. 모든 문자열을 문자 순서대로 탐색한다.

3. 탐색하며 모든 문자열이 같으면 누적하고, 다르면 바로 리턴한다.

 

1. 모든 문자열을 순서대로 정렬한다.

2. 가장 첫 문자열과 끝 문자열이 가장 많이 차이나므로 둘만 비교해도 충분하다.

 

Input: [""] 일 때 에러 발생으로 첫번째 if문 추가

Input: ["",""] 일 때 에러 발생으로 두번째 if문 추가

 

[C++]

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (strs.empty()) {
            return "";
        }
        
        if (strs[0].empty()) {
            return strs[0];
        }
        
        sort(strs.begin(), strs.end());
        
        string ret;
        int size = strs.size();

        for (int i = 0; i <strs[0].size(); ++i)
        {
            if (strs[0][i] != strs[size - 1][i]) {
                return ret;
            }
            
            ret += strs[0][i];
        }
        
        return ret;
    }
};

 

[Python3]

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        ret = str()
        strs.sort()
        
        for i in range(0, len(strs[0])):
            if strs[0][i] != strs[-1][i]:
                print("exit")
                return strs[0][:i]
        return strs[0]

 

320x100

'코딩테스트 준비 > leetcode' 카테고리의 다른 글

83. Remove Duplicates from Sorted List  (0) 2021.08.11
88. Merge Sorted Array  (0) 2021.08.10
118. Pascal's Triangle  (0) 2021.08.08
1. Two Sum  (0) 2021.08.07
50. Pow(x, n)  (0) 2021.08.07