red中正常的e,最少修改次数
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str=in.next();
System.out.println(func(str));
}
private static int func(String str){
int n=str.length();
if(n%2==1){
return jishuFunc(str,0,n-1);
}
int ret=Integer.MAX_VALUE;
for(int i=1;i<n;i+=2){
int left=jishuFunc(str,0,i-1);
int right=jishuFunc(str,i,n-1);
ret=Math.min(ret,left+right);
}
return ret;
}
private static int jishuFunc(String str,int left,int right){
int n=right-left+1;
assert n%2==1;
if(n<3){
return 0;
}
int dpr=0;
int dpd=0;
char ch=str.charAt(left);
if(ch=='r'){
dpd=1;
}else if(ch=='d'){
dpr=1;
}else{
dpr=1;
dpd=1;
}
int ret=0;
for(int i=left+1;i<=right;i++){
ch=str.charAt(i);
if((i-left)%2==1){
if(ch!='e'){
ret++;
}
}else{
int nextdpr=0;
int nextdpd=0;
if(ch=='r'){
nextdpr=dpd;
nextdpd=1+dpr;
}else if(ch=='d'){
nextdpr=1+dpd;
nextdpd=dpr;
}else{
nextdpr=1+dpd;
nextdpd=1+dpr;
}
dpr=nextdpr;
dpd=nextdpd;
}
}
ret+=Math.min(dpr,dpd);
return ret;
}
}