Leetcode/NeetCode

[ArraysString][Medium] 271. Encode and Decode String

자전거통학 2024. 7. 8. 21:40

https://neetcode.io/problems/string-encode-and-decode 

 

NeetCode

 

neetcode.io

 

주어진 string을 조각으로 분해 한 후, 다시 합치는 로직 즉, encode, decode 함수를 만들어라. 

 

역시 여러가지 다양한 방법이 있을 수 있겠으나, 

나누는 문자 등과 구분을 위하여, 

길이+string 꼴로 변환할 필요가 있다는 것이다. 

 

이것에 유의해서 만들면 큰 어려움은 없을 것. 

 

코드 

더보기
string encode(vector<string>& strs) 
{
    string ret = "";
    for (auto k = 0; k < strs.size(); ++k)
    {
        string now = strs[k];
        ret += to_string(now.size());
        ret += ":";
        ret += now;
    }
    return ret;
}

vector<string> decode(string s) 
{
    vector<string> vRet;
    string sCur = "";
    int cnt = -1;
    for (auto k = 0; k < s.size(); ++k)
    {
        char now = s[k];
        if (cnt == -1)
        {
            if (now >= '0' && now <= '9')
                sCur += now;
            else if (now == ':')
            {
                cnt = atoi(sCur.c_str());
                sCur = "";

                if (cnt == 0)
                {
                    vRet.push_back("");
                    cnt = -1;
                }
            }
        }
        else
        {
            --cnt;
            sCur += now;
            if (cnt == 0)
            {
                vRet.push_back(sCur);
                sCur = "";
                cnt = -1;
            }
        }
    }
    return vRet;
}

 

 

결과