Longest Common Prefix

Yohan Kim·2021년 8월 23일
0

problem

주어진 문자 배열에서 가장 긴 접두사를 찾는 문제입니다.
["flower", "flow", "flight"] -> ["fl"]

code

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string commonPrefix = strs[0];
        
        if(strs.size() == 1)
            return commonPrefix;
        
        for(int i = 1; i <strs.size();i++)
        {
            int j = 0;
            while(strs[i][j] == commonPrefix[j])
            {
                if( j < commonPrefix.length())
                    j++;
                else 
                    break;
                
            }
            commonPrefix = commonPrefix.substr(0,j);
            if(commonPrefix =="") break;
        }
        return commonPrefix;
    }
};

performance

중간에 겪은 오류

문제를 다 풀고 보니까 자꾸 heap - buffer - overflow가 발생했다.
생각해보니까 내가 적은 코드에서 heap에서 메모리를 할당받은 적이 없는데 heap 영역에서 오류가 나서 의아했다. 하지만 조금 더 생각해보니까
공통의 string을 비교하는 경우, while의 조건문에 의해 j의 값이 증가하는데, 두개의 string이 똑같을 경우 j의 값이 계속 올라가고 substr에서 heap의 영역까지 침범하여 오류가 난듯 싶었다. 결국에는 조건문을 추가하고 문제를 풀 수 있었다.

profile
안녕하세요 반가워요!

0개의 댓글