class Solution{
private:
int n;
public:
int getLesser(string &str){
n=str.size();
//如果字符串为空,或者本身是纯色,直接返回0
if(n==0||str.find('r')==-1||str.find('b')==-1) return 0;
//如果是杂色,只有两种情况
//第一种情况是前面是r,后面全是b,r不能在b前面
//第二种情况是前面全是b,后面全是r,b不能在r前面
return min(getAns('r','b'),getAns('b','r'));
}
/**************************************************
/*第一个参数是指前面的颜色
/*第二个参数是指后面的颜色
***************************************************/
int getAns(string &str,char a,char b){
//na表示以a这个颜色做结尾要反转的次数
int na=0;
//nb表述以b这个颜色做结尾要反转的次数
int nb=0;
for(int i=0;i<n;i++){
if(str[i]==a) nb=min(na,nb)+1;
else{
nb=min(na,nb);
na++;
}
}
return min(na,nb);
}
}