行编辑器 2016年360笔试题目 字符串处理

来源:互联网 发布:苹果mac看视频软件推荐 编辑:程序博客网 时间:2024/04/28 00:51

个人说明:该题对字符串进行简单的的处理输出,但提交运行不正确,后才发现和自己调试不一样的地方,测试应该使用的字符流,如果输入第一行后使用sync或者fflush函数将会清空测试集输入,故出错。

题目大意:你知道行编辑器吗?不知道也没关系,现在我会告诉你:1如果你收到一个‘#’,那么你应该删掉一个你已经收到的字符,不包括‘#’;2如果你收到‘@’,那么你应该把你收到的一整行都删掉。(‘#’和‘@’都为不可见字符。)你明白了吗?现在轮到你去解决这个问题啦!

输入: 第一行是一个整数T,代表有T组数据。每组数据的开始时一个字符串,具体可以看样例

样例输入:

3

whli##ilr#(s#*s)

outcha@putcha(*s=#++)

returnWA##A!##AC

样例输出:

while(*s)

putchar(*s++)

returnAC

代码://未考虑第一个字符为‘#’时,删除上一行的最后一个字符。主要是这里题意不清。我这里忽略第一个字符‘#’。

#include<iostream>
using namespace std;

int main()
{
    char ch;
    int n,index;
    char inputLineBuf[100];
    cin >> n;                    
    cin.ignore(numeric_limits<int>::max(),10); //clear first line

    
    while (n--)
    {
        index = 0;
        while (1)
        {

            cin.get(ch);
            if (ch == 10)
            {
                inputLineBuf[index] = 0;
                cout << inputLineBuf << endl;
                break;
            }
            else if (ch == '@')
            {
                index = 0;
                continue;
            }
            else if (ch == '#')
            {
                if (index > 0)
                    index--;
                continue;
            }
            else
                inputLineBuf[index++] = ch;
                
        }

    }
}

0 0
原创粉丝点击