首页 > 试题广场 >

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。

[问答题]
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
#include<stdio.h>
(737)#include<stdlib.h>
#include<string.h>
(845)#include<string>
#include<iostream>
(720)#include<vector>
#include<algorithm>

using namespace std;
int main()
{
	string a,b,c;
	vector<int> vec;
	/*cin>>a;
	cin>>b;*/
	getline(cin,a);//输入一行第一个序列
	getline(cin,b);//第二个序列
	
	
	for(int i=0;i<b.length();i++)
	{
		
	
		for(int j=0;j<a.length();j++)
		{
			if(a[j]==b[i])
			{
				vec.push_back(j);
			}
		}
	}

	//for(int i=0;i<vec.size();i++)
	//{
	//	cout<<vec[i]<<endl;
	//	
	//}

	for(int j=0;j<a.length();j++)
		{
			vector<int>::iterator it;
			it=find(vec.begin(),vec.end(),j);
			if(it==vec.end())
			{
				c=c+a[j];//c创建一个序列
			}
		}
	cout<<c<<endl;
	system("pause");
}

发表于 2020-02-23 18:32:58 回复(0)
Scanner scan = new Scanner(systemn.in); String s1 = scan.nextline(); String s2 = scan.nextline(); Char[] first =s1.toCharArray(); Char[] second =s1.toCharArray(); for(int i=0,i<first.length,i++){ for(int j=0,j<second.length,j++){ if(first[i].equals(second[j])){ s1 = s1.replace("first[i]",""); } } } system.out.println(s1) }
发表于 2020-08-25 16:03:45 回复(0)
// string_del.cpp : 定义控制台应用程序的入口点。
//

#include <stdio.h>
#include <string.h>

#define NUM_MAX 1000
static char string1[NUM_MAX]="They are students.";
static char string2[NUM_MAX]="aeiou";

void main()
{
	int string1_size,string2_size,string1_temp;
	string1_size=strlen(string1);
	string2_size=strlen(string2);
	printf("string1:\n");
	puts(string1);
	printf("string2:\n");
	puts(string2);
	for(int i=0; i<string2_size; i++){
		for(int j=0; j<string1_size; j++){
			if(string1[j]==string2[i]){
				string1_temp=strlen(string1);
				for(int k=j; k<string1_temp; k++){
				    string1[k]=string1[k+1];
				}

			}
		}
	}
	printf("del after string1:\n");
	puts(string1);
}

编辑于 2020-03-29 21:30:49 回复(0)
void Delstr(char* str1, char* str2)
{
    char* s1 = str1;
    char* s2 = str2;
    while (*s1 != '\0' && *s2 != '\0')
    {
        while (*s1 != '\0' && *s2 != '\0')
        {
            if (*s1 == *s2)
            {
                char* tmp = s1;
                while (*(tmp + 1) != '\0')
                {
                    *tmp = *(tmp + 1);
                    tmp++;
                }
                *tmp = '\0';
                s1--;
            }
            else
            {
                s2++;
            }

        }
        s1++;
        s2 = str2;
    }
}


int main()
{
    char str1[20];
    char str2[20];
    gets(str1);
    gets(str2);
    Delstr(str1, str2);
    printf("%s", str1);
    return 0;
}
发表于 2023-08-10 11:47:19 回复(0)
#include <stdio.h>
#include <string.h>
void swap(char* str, int j , int* sz1)
{
    int sz = *sz1 - j;
    for (int i = 0; i < sz - 1; i++)
    {
        *(str + j + i) = *(str + j + i + 1);
    }
    (*sz1)--;
}

int main()
{
    char str1[] = { "They are students." };
    char str2[] = { "aeiou" };
    int sz1 = strlen(str1);
    int sz2 = strlen(str2);
    int i = 0;
    int j = 0;
    for (i = 0; i < sz2; i++)
    {
        for (j = 0; j < sz1; j++)
        {
            if (*(str2 + i) == *(str1 + j))
            {
                swap(str1 , j, &sz1);
            }
        }
    }
    for (j = 0; j < sz1; j++)
    {
        printf("%c", *(str1 + j));
    }
    return 0;
}
发表于 2023-06-06 09:18:33 回复(0)
Def Delete(str1,str2):
    if str1 is None&nbs***bsp;str2 is None :
        return
    for i in str1 :
         if i in str2:
            str1=str1.replace(i,'')
    return ''.join(str1)
来一个python的解法
发表于 2021-08-14 12:03:38 回复(0)
323asdf
发表于 2020-11-28 21:34:55 回复(0)
#include <iostream>
#include <vector>
#include <string>
using namespace std;



int main()
{
	string str1 = "";
	string str2 = "";
	getline(cin, str1);
	getline(cin, str2);
	vector<size_t>v;

	for (size_t i = 0; i < str1.size(); i++)
	{
		for (size_t j = 0; j < str2.size(); j++)
		{
			if(str1[i]==str2[j])
				v.push_back(i);
		}
	}
	for (size_t i = 0; i < v.size(); i++)
	{
		v[i] -= i;
	}
	for (size_t i = 0; i < v.size(); i++)
	{
		str1.erase(v[i], 1);
	}
	cout << str1 << endl;
	return 0;
}

发表于 2020-11-23 01:48:37 回复(1)
def DeleteChars(str1,str2):
    res = ''
    for k in str1:
        if k in str2:
            continue
        else:
            res = ''.join([res,k])
    return res

str1 = input()
str2 = input()

res = DeleteChars(str1,str2)
print(res)

发表于 2020-10-22 09:56:21 回复(0)
public class Main{
    public String fun(String str1, String str2){
        char[] chars2 = str2.toCharArray();
        char[] chars1 = str1.toCharArray();
        HashTable table = new HashTable();
        for(char c : chars2){
            table.put(c,1);
        }
        String res = "";
        for(int i=0;i<chars1.length;i++){
            if(table.containsKey(chars[i])){
                continue;
            }
            res += chars1[i];
        }
        return res;
    }
}

发表于 2020-03-28 19:21:23 回复(0)
可以先计算出需要删除的字符,然后从后往前移动,这样只需要O(n)的时间就行。
发表于 2020-03-27 22:26:41 回复(0)
#include <string>
#
include<iostream>
using namespace std;
int main()
 {
  string a;
  string b;
  while (getline(cin, a) && getline(cin, b))
  {
   int t[256] = { 0 };
   for (auto c : b)
   {
    t[c]++;
   }
   for (auto it = a.begin(); it != a.end();)
   {
    if (t[*it] > 0)
    {
     it = a.erase(it);
    }
    else
    {
     ++it;
    }
   }
   cout << a << endl;
  }
 return 0;
 }
发表于 2020-03-26 00:00:09 回复(0)
def fuc(str1, str2): for i in str2:
        s = str1.replace(i, '')
        str1 = s return s

发表于 2020-03-14 14:12:22 回复(0)
/**
 * 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
 * @param {String} target 目标字符串
 * @param {String} str 需要删除的字符串
 * @returns {String}
 */
function deleteAllStr(target,str){
   for(let i = 0 ; i < str.length; i++){
    target = target.replace(new RegExp(str[i],'gi'),'');
   }
   return target;
}
编辑于 2020-03-06 14:29:13 回复(0)
var [str,rep]=readline().split(" ")//在一行里,两行的话分开读
for(let i=0;i<rep.length;i++){
    while(str.includes(rep[i])){
        str=str.replace(rep[i],"")
    }
}
console.log(str)

发表于 2020-02-29 10:17:49 回复(0)
#include<stdio.h>
#include<string.h>
#include<>stdlib.h>
void D(char*str1,char*str2)
{
    char*pFast=str1;
    char*pSlow=str2;
    int a[256]={0};
    int i;
    int n=strlen(str2);
    for(i=0;i<n;++i)
    {
        a[str2[i]]=1;
    }
    while(*pFast)
    {
        if(a[*pFast]==0)
        {
            *pSlow=*pFast;
            pSlow++;
        }
        pFast++;
    }
    *pSlow='\0';
}
int main()
{
    char str1[1000];
    char str2[1000];
    gets(str1);
    gets(str2);
    D(str1,str2);
    printf("%s\n",str2);
    return 0;
    
}



发表于 2019-12-17 03:43:13 回复(0)

s1 = input()

s2 = input()

for i in s2:

s1 = s1.replace(i,"")

print(s1)

发表于 2019-12-15 20:31:42 回复(1)