在C中,如何从另一个数组中删除一个数组中存在的所有字符?在C中,如何从另一个数组中删除一个数组中存在的所有字符?
回答
听起来像家庭作业,但这里有一个解决方案。
制作256个条目的数组,如char set[256]
。 阅读第一个字符串。对于每个字符c
将set[(unsigned char)c]
设置为1. 读取并复制第二个字符串。对于每个字符c
如果set[c]
则跳过c
。
我忘了,离开了,你必须先memset(set, 0, sizeof(set))
任何值设置为1
你为什么决定选择256?也不应该是'int'数组,而不是'char's? – 2011-03-04 03:57:40
@Andrew:标准的8位字符。我想*真的很挑剔*你需要使用预处理器宏来确定实际的字节大小。 – 2011-03-04 04:00:30
@Andrew:我使用char来节省空间。它实际上应该是一个有点向量,但这太麻烦了,而且宏是令人讨厌的。 – 2011-03-04 04:01:05
如果他们是数字:
你不能“删除”他们,但你可以将其设置为0
(或能代表你的情况去除任何其他值),或者创建一个包含了一个新的数组不属于两个数组的子集的数字。
蛮力的方法是使用两个嵌套for
循环
如果他们char
S:
你可以“删除”他们的“转移” - “交换” - “移动”的所有字符,不属于左侧的公共子集,然后将空终止符设置在正确的位置。 (只要你不乱用字符串文字(char * p = "lala"
)这很好)。这几乎使得常见的char
消失。
之前,假设你想删除A0存在A1中的字符。首先创建一个布尔数组,其中每个索引都是一个字符。恩。如果在a1中找到'c',x ['c']将成立。然后通过a0循环,检查x数组以查看是否应该保留或抛出一个字符。如果需要,您可以创建一个元素被删除的新数组。这应该是O(n)操作。
void remove_repeated(char* s, char* another)
{
// ... preparation with another... see other answers
for (pos = p = s; *p != 0; p++)
{
if (!macro_is_repeated(*p))
*pos++ = *p;
}
*pos = 0;
}
查看对is_repeated
零件的其他解答。
- 1. 如何从另一个数组中包含的数组中删除数字?
- 2. 存储从一个字符数组中的值到另一个字符数组
- 3. 如何从另一个数组中删除数组元素?
- 4. 如何将字符数组分配给另一个字符数组中的另一个字符数组C
- 5. 从perl中删除另一个数组中的一个数组中的元素
- 6. 数组函数从数组中删除第一个字符
- 7. 如何从数组中删除最后一个字符?
- 8. 如何将一个数字删除到一个java数组中?
- 9. 从Python中的数组中删除一个字符串
- 10. 找到另一个字符数组字符数组在C
- 11. 从另一个数组中删除一个数组的所有元素的最有效方法是什么?
- 12. 如何从MySQL的JSON数组中删除一个数字?
- 13. 如何在javascript中删除数组中所有字符串的一部分?
- 14. 选择数组中所有值存在于另一个数组中的文档
- 15. 删除存在于另一个数组列表中的数组列表中的所有对象
- 16. 删除一个项目从数组另一个数组
- 17. 一个数组中的所有数字都是<=到另一个数组
- 18. 的Javascript:如果一个数组中的所有字符串存在于另一个字符串
- 19. 如何有一个数组值,在另一个数组中找到一个值?
- 20. 如何从一个字符数组中删除前4个字符
- 21. 如何从另一个数组中减去一个数组?
- 22. 查找数组中的字符串是否存在于另一个数组中
- 23. 将数组存储在另一个数组中C
- 24. 从另一个数字中删除所有9的Java方法?
- 25. 要从一个数组中不存在于另一个数组中的所有值
- 26. 如何从numpy数组列表中删除一个numpy数组?
- 27. 如何从多维数组中删除一个空数组php
- 28. 如何从php中删除另一个数组?
- 29. 从阵列中删除项目,如果他们在另一个数组存在
- 30. 如何在JavaScript数组中的一个数字后删除7个数字?
你在说'0'终止的字符串吗?这是功课吗? – Apalala 2011-03-04 03:54:58
到目前为止你有什么? – 2011-03-04 04:01:13