Skip to content

Latest commit

 

History

History

2405

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Given a string s, partition the string into one or more substrings such that the characters in each substring are unique. That is, no letter appears in a single substring more than once.

Return the minimum number of substrings in such a partition.

Note that each character should belong to exactly one substring in a partition.

 

Example 1:

Input: s = "abacaba"
Output: 4
Explanation:
Two possible partitions are ("a","ba","cab","a") and ("ab","a","ca","ba").
It can be shown that 4 is the minimum number of substrings needed.

Example 2:

Input: s = "ssssss"
Output: 6
Explanation:
The only valid partition is ("s","s","s","s","s","s").

 

Constraints:

  • 1 <= s.length <= 105
  • s consists of only English lowercase letters.

Companies: Amazon, Microsoft

Related Topics:
Hash Table, String, Greedy

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/optimal-partition-of-string
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    int partitionString(string s) {
        int N = s.size(), ans = 0;
        for (int i = 0; i < N; ) {
            bool seen[26] = {};
            while (i < N && !seen[s[i] - 'a']) {
                seen[s[i] - 'a'] = true;
                ++i;
            }
            ++ans;
        }
        return ans;
    }
};