← All problems

2522. Partition String into Substrings with Values at Most K

MediumOpen on LeetCodeProblem statement

Problem Statement

2522. Partition String Into Substrings With Values at Most K

Medium


You are given a string s consisting of digits from 1 to 9 and an integer k.

A partition of a string s is called good if:

Return the minimum number of substrings in a good partition of s. If no good partition of s exists, return -1.

Note that:

 

Example 1:

Input: s = "165462", k = 60
Output: 4
Explanation: We can partition the string into substrings "16", "54", "6", and "2". Each substring has a value less than or equal to k = 60.
It can be shown that we cannot partition the string into less than 4 substrings.

Example 2:

Input: s = "238182", k = 5
Output: -1
Explanation: There is no good partition for this string.

 

Constraints:

 

C++

Source file
class Solution {
public:
    int minimumPartition(string s, int k) {
        long long n = 0, res = 1;
        for (int i = 0; i < s.size(); ++i) {
            if (n * 10 + (s[i] - '0') > k) {
                ++res;
                n = 0;
            }
            n = n * 10 + (s[i] - '0');
            if (n > k)
                return -1;
        }
        return res;
    }
};