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

万万没想到之聪明的编辑

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;
}
全部评论

相关推荐

迟缓的马里奥求你们别...:我双2,FPGA方向,在成都找工作投了上百家,收到面试的不超过10家,是成都这个地方太有说法了。西南柬埔寨
秋招,不懂就问
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-18 11:21
优秀的大熊猫在okr...:叫你朋友入职保安,你再去送外卖,一个从商,一个从政,你们两联手无敌了,睁开你的眼睛看看,现在是谁说了算(校长在背后瑟瑟发抖)
选实习,你更看重哪方面?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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