机试题 - 消除字符串中字符的最大个数
给一个字符串,字符串首尾相同可以消掉,字符串内部相邻的字符相同也可以删去,问最多能删掉几个字符
例:“nbabn”,首尾相同可以删除n,删完b也相同也可以删掉,最多能删除4个
思路:贪心思想,当首尾能删掉时优先删除,不能删时再去删除内部相邻字符,删除内部时要多次检测首尾
int res = 0;
string helper1(string s){
int low = 0;
int high = s.size()-1;
int t = 0;
while(s[low]==s[high]){
low++;
high--;
res += 2;
t++;
}
return s.substr(t, s.size()-2*t);
}
string helper2(string s){
int n = s.size();
for(int i=0;i<n;i++){
if(i<n-1 && s[i]==s[i+1]){
return s.substr(0,i-1) + s.substr(i+2, n-(i+2));
}
}
return s;
}
int function(string mystring){
string str = helper1(mystring);
string str2 = helper2(str);
while(str!=str2){
str = helper1(str2);
str2 = helper2(str);
}
return res;
}

