题目:
两个字符串A、B,从A中剔除存在于B中的字符。比如A=“hello world”,B="er",那么剔除之后A变为"hllowold"。空间复杂度要求是O(1),时间复杂度越优越好。
简单方法:
void squeeze2(char s1[], char s2[])
{
int i, j, k;
int instr2 = 0;
for(i = j = 0; s1[i] != '\0'; i++)
{
instr2 = 0;
for(k = 0; s2[k] != '\0' && !instr2; k++)
{
if(s2[k] == s1[i])
{
instr2 = 1;
}
}
if(!instr2)
{
s1[j++] = s1[i];
}
}
s1[j] = '\0';
}
优化:利用位图,hash
待续。。。