int deleteChars(char *first, char *second){
if(!first||!second) return -1;
bool hashTable[256];
memset(hashTable,0,sizeof(hashTable)*sizeof(bool));
for (int i=0;i<strlen(second);++i)
{
hashTable[(unsigned char)second[i]] = true;
}
char *fast=first;
char *slow=first;
while(*fast){
if(!hashTable[*fast]){
*slow = *fast;
++slow;
}
++fast;
}
*slow = 0;
return 0;
}hash的思想,只是处理ascii字符,时间复杂度O(N+M),空间复杂度O(1)。
从一个字符串中删除另一个字符串中出现的字符
最新推荐文章于 2023-12-06 18:42:32 发布
本文介绍了一种使用C语言实现的高效算法,用于从源字符串中删除目标字符串中的所有字符。该算法利用哈希表来跟踪目标字符串中的字符,从而在遍历源字符串时可以快速判断是否需要将字符复制到结果字符串中。时间复杂度为O(N+M),空间复杂度为O(1)。

486

被折叠的 条评论
为什么被折叠?



