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.
class Solution {
public:
int compress(vector& nums) {
int n=nums.size();
string s="";
nums.push_back('*'); // for not getting the error as we will check for nums[i+1] in the loop
int freq=1;
for(int i=0;i1){ //if freq=1 then no need to append the frequency
s+=to_string(freq);
freq=1;
}
}
}
for(int i=0;i
class Solution {
public int compress(char[] chars) {
int count = 1 ;
StringBuilder sb = new StringBuilder("");
sb.append(chars[0]);
for(int i = 1 ;i1){
sb.append(count+"");
}
sb.append(chars[i]);
count = 1;
}else{
count++;
}
}
if(count>1){
sb.append(count+"");
}
for(int i=0;i
In this program the goal is to make a list of let’s say,characters , like letters or numbers and make the list shorter by counting how many times the same character appears in a row writing that number next to the character.
Let’s see the step-by-step approach of the code:
And let us first calculate the size n= nums.size()
Count (‘freq’) is greater than 1 we have to append the ‘freq’ as well.
After the loop , We have used here two string function to store the compressed string ‘s’ which contains the the compressed version of the original string.
Finally , the function returns the length of the compressed string.
© 2021 edSlash. All Rights Reserved.