欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基础编程题目集 7-29 删除字符串中的子串 (20分)

程序员文章站 2022-06-08 08:10:08
...

基础编程题目集 7-29 删除字符串中的子串 (20分)

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);
    }
}