1. class Solution {
    2. bool del(vector<int>& digits, int val)
    3. {
    4. for(int i = digits.size() - 1; i >= 0; i--)
    5. {
    6. if(digits[i] % 3 == val)
    7. {
    8. digits.erase(digits.begin() + i);
    9. return true;
    10. }
    11. }
    12. return false;
    13. }
    14. public:
    15. string largestMultipleOfThree(vector<int>& digits) {
    16. if(!digits.size()) return "";
    17. sort(digits.begin(), digits.end(), greater<int>());
    18. int zeros = 0 , sum = 0;
    19. for(auto x: digits)
    20. {
    21. sum += x;
    22. if(!x) zeros++;
    23. }
    24. if(sum % 3 == 0)
    25. {
    26. }
    27. else if(sum % 3 == 1)
    28. {
    29. if(del(digits, 1)){}
    30. else{
    31. bool b = del(digits,2) && del(digits,2);
    32. if(!b) return zeros? "0":"";
    33. }
    34. }
    35. else if(sum % 3 == 2)
    36. {
    37. if(del(digits,2)){}
    38. else{
    39. bool b = del(digits, 1) && del(digits, 1);
    40. if(!b) return zeros? "0":"";
    41. }
    42. }
    43. if(digits[0] == 0) return "0";
    44. string res = "";
    45. for(int i = 0; i < digits.size(); i++)
    46. {
    47. res += digits[i] + '0';
    48. }
    49. return res;
    50. }
    51. };