【问题标题】:compare subsequence of string in java比较java中字符串的子序列
【发布时间】:2022-01-23 17:20:49
【问题描述】:

我有 string1,它有动态数据,例如 String1 = "0102030405060A27080A",String1 的长度可以变化,它可以有 2 个字节到最大 34 个字节的数据。

拥有另一个具有固定数据的 String2 String2 = "AO", "A0", "A1", “A2”, "A3", "A4", "A5", "A6", "A7", "A8", “A9”, "AA", "AB", “交流”, “广告”, “AE”, “自动对焦”}

如果 String1(i,i+2) 的 2 个字节不应该是 String 2 的一部分,我想处理某些条件。例如

每次从 String1 中获取 2 个字节,如果匹配继续,则比较 String2 中的两个字节代码,否则什么也不做。在上面的示例中,来自 String1 的前两个字节值 01020304050607080A 不是 string2 的一部分。

【问题讨论】:

  • String String1 = "G2K140";字符串 String2 = "G2K133"; for (int i = 0; i
  • 由于 s2 是固定的,你可以只取 s1,把它分成 2 个字节的子串,然后检查子串是否在 s2 内,如果 s1 是奇数,你可以找到最大 2 个字节的子串来检查
  • @JayeshRajvir 为什么不将答案发布为答案。评论部分不是为了那个。
  • String2 是字符串数组吗?
  • String2 = "AO", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF" } 不是字符串,既不是数组也不是列表。所以呢?并且代码应该添加到问题中,而不是作为评论(非常难以阅读)

标签: java arrays string substring


【解决方案1】:
    int val = 8;
    String s1 = "0102030405060A2770A91BB90465567A27080AAA77";
    String s2 = "AOA0A1A2A3A4A5A6A7A8A9AAABACADAEAF";

    int chunks = s1.length()/val;

    for(int i = 0; i < chunks;i++){
        String sub_s1 = s1.substring(i*val,(i+1)*val);
        System.out.println(s2.indexOf(sub_s1));
    }

大概是这样的。

【讨论】:

  • 嗨 B.Quinn,String1 和 String2 总是有偶数字节,但我们不能将长度硬编码为 8 个字节,因为 String 会有偶数个动态数据,最小 2 和最大 34 字节
  • 你在上面说过你想从每个字符串中取出 2 个字节并比较它们,然后继续下一个 2 个字节?那是硬编码的值,我只是将该值表示为 2 个字节,您可以更改它,但逻辑是合理的。
  • 上面代码中s1的长度是动态的,你比较的子串的大小不是动态的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2011-05-03
  • 1970-01-01
  • 2020-08-23
  • 2017-02-20
  • 2014-11-11
相关资源
最近更新 更多