题目是消除一个字符串中的所有重复字符,并求出各种插入方法中消除字符数最多的。解决思路: 思路比较简单,首先实现消除的函数,然后依次按位置插入对应的ABC三种字符,然后计算消减数目,最后求最大的。这里考虑到插入不必要所有位置都插入,对于A来说插入到不是A的字符旁边是没有意义,可知应不存在一种插入情况使得一个孤立的字符A在经历某种消减之后比最大的消减次数还多。所以A只要遍历全所有原来A字符旁边的空即可,BC同理。
void process_str(string& str)
{
//如果字符串为1或者0长度就返回
if (str.size() == (0) || str.size() == 1 )
return ;
int i = 0;
// 循环中每次都要调用str.size()获得最新的长度
while(i < str.size() )
{
if(str[i] != str[i+1])
{
i++;
}
else{
char tmp = str[i];
int j = 1 ;
for(; (j < str.size()-i) && (tmp == str[i+j]) ; j++)
{
continue;
}
str.erase(i,j);
process_str(str);
}
}
}