1 条题解
-
0
#include<bits/stdc++.h> using namespace std; // [1] arr数组-定义但未使用,属于冗余代码 int arr[1000]; int main(){ // [2] s-存储输入的原文本字符串(包含空格,用getline读取) // s1-存储需要替换的目标子串 // s2-存储替换后的新子串 string s,s1,s2; // [3] 读取三行输入:原文本、待替换子串、目标子串 // 使用getline是因为原文本包含空格,cin>>会截断空格后的内容 getline(cin,s); getline(cin,s1); getline(cin,s2); // [4] 遍历原文本的每个字符(i为当前字符的索引) for(int i=0;i<s.size();i++){ // [5] 若当前字符与待替换子串的第一个字符相同,开始检查后续字符是否完全匹配 if(s[i]==s1[0]){ // [6] flag-标记是否完全匹配,初始为1(假设匹配) int flag=1; // [7] 内层循环:检查后续字符是否与s1的剩余字符完全一致 for(int j=1;j<s1.size();j++){ if(s1[j]!=s[i+j]){ flag=0; // 有字符不匹配,标记为0 break; } } // [8] 如果完全匹配(flag=1) if(flag){ cout<<s2; // 输出替换后的子串s2 i=i+s1.size()-1; // 跳过已匹配的s1长度的字符(避免重复处理) continue; // 继续外层循环,不输出当前字符 } } // [9] 若不匹配或未进入匹配检查,直接输出当前字符 cout<<s[i]; } return 0; }
- 1
信息
- ID
- 126
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者