码迷,mamicode.com
首页 > 其他好文 > 详细

#1039 : 字符消除

时间:2015-09-17 19:11:36      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

题目链接

消除函数

string eliminate(string buffer)
{
    string tmpbuff = buffer;
    int len;
    int len2;
    int index, start, end;
    bool isSame = false;

    end = 0;
    index = 0;
    len = buffer.length();

    while (end < len)
    {
        /* 此时 start指向上一个以处理的字符,end指向下一个待处理的字符 */
        start = end;
        end++;
        
        /* start已经是最后一个了 */
        if (end == len)
        {
            buffer.at(index) = tmpbuff.at(start);
            index++;
            continue;
        }

        /* 2个相邻字符不一样 */
        else if (tmpbuff.at(end) != tmpbuff.at(start))
        {
            buffer.at(index) = tmpbuff.at(start);
            index++;
            continue;
        }

        /* 2个相邻字符一样 */
        else
        {
            /* 找下一个不一样的字符 */
            while((end != len) && (tmpbuff.at(start) == tmpbuff.at(end)))
            {
                end++;
            }
        }
    }

    buffer.resize(index);

    return buffer;
}

   

    最开始想的是,插入的字符一定要和前或者后的一样,结果发现一直有错。仔细想想,比如ACBCCCA的情况,应该在CC和C之间插入B。

int main(void)
{
    int strNumber;
    int initialStrLength, ultimaStrLength;
    string strBuffer, tmpBuffer;
    string insertString= "ABC";

    cin >> strNumber;
    cin.ignore();

    for (int i = 0; i < strNumber; i++)
    {
        getline(cin, strBuffer);

        initialStrLength = strBuffer.length();
        ultimaStrLength = initialStrLength;
        for (int j = 0; j < initialStrLength; j++)
        {
            tmpBuffer = strBuffer.substr(0,j + 1);
            tmpBuffer += strBuffer.substr(j, strBuffer.length() - j);

            int len = tmpBuffer.length();
            tmpBuffer = eliminate(tmpBuffer);
            while (len > tmpBuffer.length())
            {
                len = tmpBuffer.length();
                tmpBuffer = eliminate(tmpBuffer);
            }

            if(ultimaStrLength > tmpBuffer.length())
            {
                ultimaStrLength = tmpBuffer.length();
            }
        }

        cout << initialStrLength - ultimaStrLength + 1 << endl; 
    }

    return 0;
}

 

#1039 : 字符消除

标签:

原文地址:http://www.cnblogs.com/l00196472/p/4816951.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!