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

相關文章
相關標籤/搜索