Algorithm/문제풀이

[leetcode] 1417. Reformat The String in C++

Razelo 2024. 5. 1. 17:15

심심해서 오랜만에 c++로 leetcode 문제를 풀어봤다. 

 

1417 Reformat the string 이라는 문제다. 

쉬운 문제라 휘리릭 풀 수 있다. 

 

역시나 PS는 한동안 안하면 다시 시작할때 꽤나 하기가 싫은 경향이 있긴 하다. 

 

class Solution {
public:
    string reformat(string s) { 
        vector<char> digits;
        vector<char> chars; 
        vector<char> result;
        digits.reserve(s.length()); 
        chars.reserve(s.length()); 
        result.reserve(s.length());   
 
        for(char c: s) { 
            if(isdigit(c)) { 
                digits.push_back(c); 
            }else { 
                chars.push_back(c); 
            }
        }

        int digit_count = digits.size(); 
        int char_count = chars.size();
        if(abs(digit_count - char_count) >= 2) { 
            return ""; 
        }

        int d_size = digits.size(); 
        int c_size = chars.size(); 
        vector<char>& larger = digits.size() > chars.size() ? digits : chars; 
        vector<char>& smaller = digits.size() > chars.size() ? chars: digits; 
        
        for(size_t i = 0; i < larger.size(); i++) { 
            result.push_back(larger.at(i));
            if(!smaller.empty() &&  i <= (smaller.size() - 1))  {
                result.push_back(smaller[i]);
            }
        }
    
        return string(result.begin(), result.end()); ; 
    }
};
반응형