Description

A decimal number is called deci-binary if each of its digits is either 0 or 1 without any leading zeros. For example, 101 and 1100 are deci-binary, while 112 and 3001 are not.

Given a string n that represents a positive decimal integer, return the minimum number of positive deci-binary numbers needed so that they sum up to n.

Example 1:

Input: n = “32” Output: 3 Explanation: 10 + 11 + 11 = 32

Example 2:

Input: n = “82734” Output: 8

Example 3:

Input: n = “27346209830709182346” Output: 9

Constraints:

  • 1 <= n.length <= 105
  • n consists of only digits.
  • n does not contain any leading zeros and represents a positive integer.

Code

Time Complexity: , Space Complexity:

class Solution {
public:
    int minPartitions(string n) {
        int res = 0;
        for(int i = 0; i < n.size(); i++) {
            res = max(res, n[i] - '0');
        }
        return res;
    }
};

可以簡化成 1-line C++。

class Solution {
public:
    int minPartitions(string n) {
        return *max_element(n.begin(), n.end()) - '0';
    }
};

Source