1 条题解

  • 0
    @ 2026-1-28 12:57:25
    #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
    上传者