O(n) time and O(1) space
Calculate sum of all block size , total number of blocks and size of largest block.
Then ans = (size of largest block * total number of blocks) - sum of all block size
All these in a single loop.
int solution(string &s){
int maxb=1;
int totalb=0;
int sumbSizes=0;
int curr_size=1;
int i=1;
int n=s.size();
for(int i=1;i<n;i++){
if(s[i]==s[i-1]){
curr_size++;
}
else{
sumbSizes=sumbSizes+curr_size;
totalb++;
maxb=max(maxb,curr_size);
curr_size=1;
}
}
sumbSizes=sumbSizes+curr_size;
totalb++;
maxb=max(maxb,curr_size);
return ((maxb*totalb)-sumbSizes);
}