3033. 删除子串

Li Dao

我能想到的最直接的写法

include

using namespace std;
int T;
string big,small;
void solve()
{
cin>>big>>small;
int ll=big.length();
int pos=0;
while(pos<ll)
{
if(big.substr(pos,small.length())==small) pos+=small.length();
else cout<<big[pos++];
}
cout<<endl;
return;
}
int main()
{
scanf(“%d”,&T);
for(int step=0;step<T;step++)
{
printf(“case #%d:\n”,step);
solve();
}
return 0;
}

10175101245

python的str.replace太爽了,几行搞定!
q = int(input())
for t in range(q):
print(“case #%d:” % t)
a,b = input().split()
print(a.replace(b,’‘))

SleepyAsh0191

用Java瞎写的

import java.util.Scanner;

public class Main{
public static void main(String[] args) {
int n;
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
scan.nextLine();
int i = 0;
while(n–!=0){
String s;
scan.useDelimiter(“\n”);
s= scan.nextLine();
String[] str = s.split(” “);
System.out.println( “case #” + (i++) + “:”);
System.out.println(str[0].replace(str[1],”“));
}
}
}

Saitama
#include<bits/stdc++.h>
using namespace std;
int T;
int main()
{
    cin>>T;
    string s,t;
    for(int i=0;i<T;i++)
    {
        cin>>s>>t;
        int len=s.length(),len2=t.length();
        printf("case #%d:\n",i);
        for(int j=0;j<len;j++)
        {
            if(s.substr(j,len2)==t)
                j+=len2-1;
            else
                cout<<s[j];
        }
        cout<<endl;
    }
    return 0;
}
Saitama

substr真是太好了

帕秋莉_诺蕾姬

这题字符串没东西的时候是要输出一个换行符的。。题目的样例骗人了!!!!

帕秋莉_诺蕾姬

我看到案例以为要那样输出。。。

10175101282

嗯是的。
不过平时写的时候不都是

printf("case #%d:\n", t);
...
printf("\n");

这样嘛

ultmaster

感谢指出,已经修正。

帕秋莉_诺蕾姬

我说的不是case后面的换行符!!!是字符串的换行符。。。
假如是空的话题目样例是
case #1:
case #2:???
而答案是
case #1:

case #2:???

10175101282

并没有骗人hhh如果样例没有输出换行符就会变成:

case #1:case #2:
你当前正在回复 博客/题目
存在问题!