题解 | #万万没想到之聪明的编辑#

万万没想到之聪明的编辑

http://www.nowcoder.com/practice/42852fd7045c442192fa89404ab42e92

每一个字符的输入都应对不同的状态,参考一个自动机的题解,逐个输入字符串的每个字符,将符合需求的状态的字符进行拼接,最后输出字符。

#include <stdio.h>
#include <iostream>

using namespace std;

void fun(const string& str)
{
    int state = 0;
    char cur;
    char last = str[0];

    string rst = "";
    rst += str[0];

    for(int i=1;i<str.size();i++)
    {
        cur = str[i];
        switch(state)
        {
            case 0:
                {
                    if(cur == last)
                        state = 1;
                    else
                        state = 0;
                    break;
                }

            case 1:
                {
                    if(cur == last)
                    {
                        continue;
                    }
                    else
                    {
                        state = 2;
                    }
                    break;
                }

            case 2:
                {
                    if(cur == last)
                    {
                        continue;
                    }else
                    {
                        state = 0;
                    }
                    break;
                }

            default:
                break;
        }

        rst += cur;
        last = cur;
    }

    cout << rst << endl;
}
int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        string str;
        cin >> str;
        fun(str);
    }
    return 0;
}
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务