【问题标题】:compare 2 strings by character to find differences按字符比较 2 个字符串以找出差异
【发布时间】:2013-02-28 02:27:04
【问题描述】:

只是想知道是否有一种快速方法来确定 @ 字符串中的哪些点元素不同。我有 2 个二进制字符串,我想知道@它们有多少不同的地方。

1111111100010001111011100010001011011101001100111100110001000100
0001001011001101110110000101001111111010000000010001110001000000

所以我想我需要一个 for 循环和一个计数器,但我只知道 compare() 和类似的东西,但不知道如何逐个字符 感谢您的帮助

【问题讨论】:

    标签: java string binary iterator


    【解决方案1】:

    编写您自己的KMP 变体的实现

    【讨论】:

      【解决方案2】:
          public static int diff( byte [] a, byte [] b){
          int diff = 0;
          String byteAr1;
          String byteAr2;
          char A1 [];
          char A2 [];
      
          byteAr1 = hexToBin(a);
          byteAr2 = hexToBin(b);
      
          A1 = byteAr1.toCharArray();
          A2 = byteAr2.toCharArray();
      
          for( int i = 0; i < A1.length; i++){
              if(A1[i] != A2[i]){
                  diff++;
              }
          }
          return diff;
      }
      

      【讨论】:

        【解决方案3】:

        你的字符串总是一样长吗?如果是这样,您可以这样做:

        for(int i = 0; i < string1.length(); i++) {
            if(string1.charAt(i) == string2.charAt(i))
            //the two chars are equal
        }
        

        如果字符串的长度不同,则会失败,因为您将尝试访问不存在的字符

        【讨论】:

        • 好答案。由于这些是二进制数序列,我假设它们代表整数 short 或 long,它们是固定长度的。如果是这种情况,我们可以假设长度相等,并且此解决方案将完美运行。
        【解决方案4】:

        将字符串转换为字节数组并使用 XOR (^) 运算符。

        数一数1的个数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多