编程题 7-29 删除字符串中的子串【PAT】

文章目录

编程练习题目集目录

题目

输入 2 2 2 个字符串 S 1 S1 S1 和 S 2 S2 S2,要求删除字符串 S 1 S1 S1 中出现的所有子串 S 2 S2 S2,即结果字符串中不能包含 S 2 S2 S2。

输入格式

输入在 2 2 2 行中分别给出不超过 80 80 80 个字符长度的、以回车结束的 2 2 2 个非空字符串,对应 S 1 S1 S1 和 S 2 S2 S2。

输出格式

在一行中输出删除字符串 S 1 S1 S1 中出现的所有子串 S 2 S2 S2 后的结果字符串。

输入样例

Tomcat is a male ccatat

cat

输出样例

Tom is a male

题解

解题思路

首先利用 g e t l i n e ( ) getline() getline() 函数分别读入字符串和要删除的字符串;然后使用 f i n d ( ) find() find() 函数查找 s t r str str 字符串中是否有和 s s s 字符串完全一样的部分,如果没有找到直接输出字符串 s t r str str 即可;如果找到则利用 e r a s e ( ) erase() erase() 函数将字符串 s t r str str 中与 s s s 字符串完全一样的部分删除,然后输出即可。

完整代码

cpp 复制代码
#include<string>
#include<iostream>
using namespace std;

int main(void)
{
    string str, s;
    cout << "请输入两个字符串:";                    // 提交时注释此行
    getline(cin, str);
    getline(cin, s);
    while (str.find(s) < str.length())				        // find()函数用法:x.find(y); 在x中找y
        str = str.erase(str.find(s), s.length());     // erase()函数用法:str.erase(x,y); 从位置x处开始,删除y个字符
    cout << str << endl;
    return 0;
}
相关推荐
Yupureki21 小时前
《Linux系统编程》16.进程间通信-共享内存
linux·运维·服务器·c语言·数据结构·c++
看山是山_Lau21 小时前
如何封装和定义一个函数
c语言·开发语言·c++·笔记
-许平安-1 天前
MCP项目笔记五(PluginAPI)
c++·笔记·rpc·json·mcp·pluginapi
C_Si沉思1 天前
C++与硬件交互编程
开发语言·c++·算法
tankeven1 天前
HJ148 迷宫寻路
c++·算法
xiaoye-duck1 天前
《算法题讲解指南:优选算法-链表》--53.重排链表,54.合并 K 个升序链表,55.K个一组翻转链表
c++·算法·链表
j_xxx404_1 天前
蓝桥杯基础--前缀和
数据结构·c++·算法·蓝桥杯·排序算法
chh5631 天前
从零开始学习C++ -- 基础知识
开发语言·c++·windows·学习·算法
旺仔.2911 天前
顺序容器:list双向链表 详解
数据结构·c++·链表·list
楼田莉子1 天前
CMake学习:CMake在静态库工程场景上应用
开发语言·c++·后端·学习·软件构建