PTA训练--A-B(字符串)

闲话少说,直接上题目:
1.PNG
要求输入两个字符串,从字符串A中把字符串B包含的字母全删掉。java

最初的反映出来的就是定义两个循环,外循环为B的长度,内循环为A的长度,进行一个一个的比较,若是相等就用replace()替换。数组

作完以后提交发现不经过。。。。。超时了,百度了一下发现有个学长的思路不错,值得学习借鉴:定义一个256的数组用于存放ASCII码,B中出现的ASCII记录为1,循环A数组,若是相等就跳过。代码以下:学习

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        
        Scanner scan=new Scanner(System.in);
        String s=scan.nextLine();
        char []A=s.toCharArray();
        String b=scan.nextLine();
        char []B=b.toCharArray();
        int []r=new int[256];
        
        for(int i=0;i<B.length;i++){
            r[B[i]]=1;
        }
        
        for(int i=0;i<A.length;i++)
        {
            if(r[A[i]]==1)
            {
                continue;
            }
            System.out.print(A[i]);
        }
    }
}

兴高采烈的去提交了,嗯恩摁鞥......竟然仍是过不了,仍是超时,仍是14分,个人大java真的作不出来嘛,我真是。。。。最后我作了一个决定,用C语言从新作一个试试,还真是过了。spa

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0,j=0;            
    char A[10010];        
    char B[10010];        
    int length;                
    gets(A);
    gets(B);
    length = strlen(B);    
    while(A[i]!='\0')
    {
        for(j=0;j<length;j++)
        {                    
            if(A[i]==B[j])
                break;            
        }                        
        if(j==length)
            printf("%c",A[i]);
        i++;
    }
    printf("\n");
    return 0;
}

大概解释一下:只须要记录B的长度,拿着A的每个元素去和B对比,若是相等了就不输出,进行i++,若是找到最后一个仍是不相等,那就说明没有找到,j==length,进行输出。
怎么样,简单吧🌈仍是本身能力不足,须要多多学习鸭code

相关文章
相关标签/搜索