All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g2401_2500.s2405_optimal_partition_of_string.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g2401_2500.s2405_optimal_partition_of_string;

// #Medium #String #Hash_Table #Greedy #2022_10_23_Time_7_ms_(99.40%)_Space_43.3_MB_(91.63%)

/**
 * 2405 - Optimal Partition of String\.
 *
 * Medium
 *
 * 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.
**/
public class Solution {
    public int partitionString(String s) {
        int count = 1;
        boolean[] arr = new boolean[26];
        for (char c : s.toCharArray()) {
            if (arr[c - 'a']) {
                count++;
                arr = new boolean[26];
            }
            arr[c - 'a'] = true;
        }
        return count;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy