char * removeStr(char *A, char *B) {//大小写相关的话 int bitMapAll[26][2]={0};//ascii 0:0x31 ,A:0x41, B:0x61 if(A == NULL) return NULL ; if(B==NULL) return NULL; while (*B!='\0') { if ( (*B>='A' &&*B<='Z' ) ) bitMapAll[(*B)-'A'][1]=1; else if (*B>='a' &&*B<='z' ) bitMapAll[(*B)-'a'][0]=1; B++; } char *temp=new char[strlen(A)];//A;//destory it int cnt=0; while (*A!='\0') { if (*A>='A' &&*A<='Z' ) if(bitMapAll[(*A)-'A'][1])//if(bitMapAll[*A+'A'-'a']) { A++; continue; } if (*A>='a' && *A<='z') if(bitMapAll[(*A)-'a'][0]) { A++;; continue; }; cnt++; *temp=*A; A++; temp++; } *temp ='\0'; return temp-cnt; } //40minutes: //bitmap complex ; int main()//o(N) {//"This is the world",B="abcdefghi" ,===>A="Ts s t worl" char mA[]="This is the world"; char mB[]="abcdefghi"; char *A=mA,*B=mB; A=removeStr(A,B); printf("%s\n",A); system("pause"); delete A; return 0; }
public String del(String sourceString, String delString) { String result = ""; for (int i = 0; i < sourceString.length(); i++) { if (!delString.contains(sourceString.charAt(i)+"")) { result += sourceString.charAt(i); } } return result; }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
利用线性hash制作bitmap,使复杂度将为o(M+N),不是传统的o(M*N)
字符串的比较是基础。