使用XOR从字符串中删除字符并查找重复项

时间:2014-06-27 19:04:01

标签: string algorithm duplicates bit-manipulation xor

以下问题基于XOR的使用:

  1. 给出一个整数的字符串。手头的任务是删除 从字符串给出字符。我尝试使用XOR来解决它。例如 char str[] = "123456"。删除给定字符的4. XOR 整个字符串。那个角色消失了。

    XOR = (1^2^3^4^5^6) ^ 4
    

    但是我留下剩下的角色的XOR。

    XOR = (1^2^3^5^6)
    

    有什么方法可以让个别角色回来吗?

  2. 我需要查找和删除具有重复项的元素(包括元素本身)

    例如。 A = {1,9,8,2,2}然后在删除后输出应为{1,9,8}

    然而,由于1 ^ 9 = 8,这将失败。因此(1 ^ 9)^ 8 ^ 2 ^ 2给出空数组。有没有使用XOR本身的替代方案?

1 个答案:

答案 0 :(得分:0)

int num=4;
for(i=0;i<strlen(str);i++)
{
    if(((str[i]-'0')^num) == 0)
        remove_number(i);
}