Algorithm/문제풀이

[leetcode] 1417. Reformat The String - cpp

Razelo 2024. 5. 1. 17:15

간만에 c++로 leetcode 문제를 풀어봤다. 

 

 

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()); ; 
    }
};
반응형