---
title: "字符串编辑"
description: "测试数据对字符串的删除，替换，以及插入"
canonical_url: "https://yangqiuyi.com/blog/suan-fa/zi-fu-chuan-bian-ji"
---

> Index of every page on this site: [llms.txt](https://yangqiuyi.com/llms.txt)

测试数据对字符串的删除，替换，以及插入

## 题目描述

从键盘输入一个字符串（长度<=40 个字符），并以字符 '.'结束。

例如：'This is a book.' 现对该字符串进行编辑，编辑功能有：

D：删除一个字符，命令的方式为：D a<br />


其中a为被删除的字符
例如：D s 表示删除字符 's' ，若字符串中有多个 's'，则删除第一次出现的。
如上例中删除的结果为： 'Thi is a book.'

I：插入一个字符，命令的格式为：I a1 a2<br />


其中a1表示插入到指定字符前面，a2表示将要插入的字符。
例如：I s d 表示在指定字符 's' 的前面插入字符 'd' ，若原串中有多个 's' ，则插入在最后一个字符的前面。
如上例中：
原串：'This is a book.'
插入后：'This ids a book.'

R：替换一个字符，命令格式为：
R a1 a2 其中a1为被替换的字符，a2为替换的字符，若在原串中有多个a1则应全部替换。
例如： 原串： 'This is a book.'
输入命令：R o e
替换后的字符串为：'This is a beek.'

在编辑过程中，若出现被改的字符不存在时，则给出提示信息"Not exist"。

## 输入

每个测试文件只包含一组测试数据，每组输入数据包含两行：

第一行，输入一个字符串，表示原串；
第二行，输入一个字符串，表示命令。

## 输出

对于每组输入数据，输出编辑后的字符串，如果被改的字符不存在，则输出"Not exist"（引号不输出）。

## 样例输入

> This is a book.
> D s

## 样例输出

> Thi is a book.

## 我的代码

```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
    char str[55];
    vector<char> res;
    // gets(str);
    cin.get(str, 55);
    int len = strlen(str);
    char op, oped;
    cin >> op >> oped;
    int sign = 0;
    if (op == 'D')
    {
        for (int i = 0; i < len; i++)
        {
            if (str[i] == oped and sign == 0)
            {
                sign = 1;
            }
            else
            {
                res.push_back(str[i]);
            }
        }
    }
    else
    {
        char exts;
        cin >> exts;
        if (op == 'I')
        {
            for (int i = len - 1; i >= 0; i--)
            {
                if (str[i] == oped and sign == 0)
                {
                    res.push_back(str[i]);
                    res.push_back(exts);
                    ;
                    sign = 1;
                }
                else
                {
                    res.push_back(str[i]);
                }
            }
        }
        else if (op == 'R')
        {
            for (int i = 0; i < len; i++)
            {
                if (str[i] == oped)
                {
                    sign = 1;
                    res.push_back(exts);
                }
                else
                {
                    res.push_back(str[i]);
                }
            }
        }
    }
    if (sign == 0)
    {
        cout << "Not exist";
    }
    else
    {
        vector<char>::iterator it = res.end();
        if (op == 'I')
        {
            while (it != res.begin())
            {
                it--;
                cout << (*it);
            }
        }
        else
        {
            it = res.begin();
            while (it != res.end())
            {
                cout << (*it);
                it++;
            }
        }
    }
}
```

## Sitemap

See the full [sitemap](https://yangqiuyi.com/sitemap.md) for all pages.
