Given an array of characters chars, compress it using the following algorithm:
Begin with an empty string s. For each group of consecutive repeating characters in chars:
1, append the character to s.The compressed string s should not be returned separately, but instead, be stored in the input character array chars. Note that group lengths that are 10 or longer will be split into multiple characters in chars.
After you are done modifying the input array, return the new length of the array.
You must write an algorithm that uses only constant extra space.
Example 1:
Input: chars = ["a","a","b","b","c","c","c"] Output: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"] Explanation: The groups are "aa", "bb", and "ccc". This compresses to "a2b2c3".
Example 2:
Input: chars = ["a"] Output: Return 1, and the first character of the input array should be: ["a"] Explanation: The only group is "a", which remains uncompressed since it's a single character.
Example 3:
Input: chars = ["a","b","b","b","b","b","b","b","b","b","b","b","b"] Output: Return 4, and the first 4 characters of the input array should be: ["a","b","1","2"]. Explanation: The groups are "a" and "bbbbbbbbbbbb". This compresses to "ab12".
Constraints:
1 <= chars.length <= 2000chars[i] is a lowercase English letter, uppercase English letter, digit, or symbol.This straightforward approach involves examining every possible combination to find the solution. While not optimal, this method is simple to understand and implement. However, its time complexity can be high for large datasets, making it inefficient for extensive inputs.
The solution examines every possible pair of numbers within the array. It's simple, but not efficient for large datasets.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n^2), Space Complexity: O(1)
This technique involves first sorting the array, which allows us to use the two-pointer method to efficiently find the required pairs. This approach is significantly better than brute force for larger datasets.
The array is sorted using qsort function in C. Two indices are then used to efficiently find the solution in linear time post sorting.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n log n), Space Complexity: O(1)
| Approach | Complexity |
|---|---|
| Brute Force Method | Time Complexity: O(n^2), Space Complexity: O(1) |
| Optimized Sort and Two-Pointer Technique | Time Complexity: O(n log n), Space Complexity: O(1) |
String Compression • Kevin Naughton Jr. • 97,097 views views
Watch 9 more video solutions →Practice String Compression with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor