基础编程题目集 7-29 删除字符串中的子串 (20分)
程序员文章站
2022-06-08 08:10:08
...
c:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100];
gets(s1);
char s2[100];
gets(s2);
int len1, len2; //字符串长度
len1 = strlen(s1);
len2 = strlen(s2);
int i, j, k; //循环变量
int flag = 1; //控制while循环
int f; //判断是否删除
while (flag)
for (i = 0; i < len1; i++)
{
flag = 0; //默认s1中不存在符合要求的子串,若遍历完后flag仍为0则程序结束
if (s1[i] == s2[0]) //寻找与子串第一个字母相同的字符
{
f = 1; //默认从第i个字符开始的子串符合要求
for (j = i, k = 0; k < len2; j++, k++) //检验是否符合要求
if (s1[j] != s2[k]) //若不符合要求,则f=0,退出for循环的检验
{
f = 0;
break;
}
if (f) //若f不为0,则进行删除操作
{
flag = 1; //即存在符合要求的子串,将flag=1以便再次检查
for (; j < len1; j++, i++) //将后面的字符逐一替换到前面
s1[i] = s1[j];
for (; i < len1; i++) //对后续多余的字符串进行清空
s1[i] = '\0';
break; //重新开始for循环,从第一位开始寻找
}
}
len1 = strlen(s1); //重新计算s1的长度,此步影响的用时很小,可有可无
}
puts(s1);
return 0;
}
c++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a, b;
getline(cin, a);
getline(cin, b);
while (a.find(b) != string::npos)
{
a.erase(a.find(b), b.length());
}
cout << a;
return 0;
}
java:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
while(s1.contains(s2)){
s1 = s1.replace(s2,""); //只需要调用replace函数 用空字符串代替s2的字符串 直至s1字符串中没有s2
}
System.out.print(s1);
}
}
上一篇: 数据结构:Queue
下一篇: 7-5 地下迷宫探索 (30分)