hihocoder1039:字符串

来源:互联网 发布:软件开发需求文档 编辑:程序博客网 时间:2024/06/09 23:55

题目是消除一个字符串中的所有重复字符,并求出各种插入方法中消除字符数最多的。解决思路: 思路比较简单,首先实现消除的函数,然后依次按位置插入对应的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);                        }    }        }



0 0
原创粉丝点击