閒話少說,直接上題目:
要求輸入兩個字符串,從字符串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