class Solution { bool del(vector<int>& digits, int val) { for(int i = digits.size() - 1; i >= 0; i--) { if(digits[i] % 3 == val) { digits.erase(digits.begin() + i); return true; } } return false; }public: string largestMultipleOfThree(vector<int>& digits) { if(!digits.size()) return ""; sort(digits.begin(), digits.end(), greater<int>()); int zeros = 0 , sum = 0; for(auto x: digits) { sum += x; if(!x) zeros++; } if(sum % 3 == 0) { } else if(sum % 3 == 1) { if(del(digits, 1)){} else{ bool b = del(digits,2) && del(digits,2); if(!b) return zeros? "0":""; } } else if(sum % 3 == 2) { if(del(digits,2)){} else{ bool b = del(digits, 1) && del(digits, 1); if(!b) return zeros? "0":""; } } if(digits[0] == 0) return "0"; string res = ""; for(int i = 0; i < digits.size(); i++) { res += digits[i] + '0'; } return res; }};