【问题标题】:Check if numbers are successive检查数字是否连续
【发布时间】:2018-11-08 19:47:53
【问题描述】:
for(int i = 0; i < aLenght; i++) {
    for(int j = 0; j < bLenght; j++) {
        if(aChars[i] == bChars[j]) {
            System.out.println(j +" == "+ i);
        }
    }
}

例如,上面的代码生成以下输出:
3 == 0
5 == 0
4 == 1
6 == 1

现在我想检查两边是否存在连续的数字。例如,上面的示例将返回 true,因为 3 == 04 == 1 是连续的。

【问题讨论】:

标签: java for-loop if-statement compare


【解决方案1】:

试试这个

for(int i = 0; i < aLenght - 1; i++) {
    for(int j = 0; j < bLenght - 1; j++) {
        if(aChars[i] == bChars[j] && aChars[i + 1] == bChars[j + 1]) {
            return true;
        }
    }
}

请注意,即使它迭代到 Alenght - 1,它也会覆盖数组的长度。因为当它达到 aLenght - 2 时,它也会与 aLenght - 1 进行比较 (aChars[i] == bChars[j] &amp;&amp; aChars[i + 1] == bChars[j + 1])。 您可以通过以下方式检查它:

@Test
public void successive() {
    char[] a = new char[]{'a', 'b', 'x', 'z', 'y'};
    char[] b = new char[]{'r', 's', 't', 'a', 'b'};
    boolean isSuccessive = false;
    for (int i = 0; i < a.length - 1; i++) {
        for (int j = 0; j < b.length - 1; j++) {
            if (a[i] == b[j] && a[i + 1] == b[j + 1]) {
                isSuccessive = true;
            }
        }
    }
    assertTrue(isSuccessive);
}

【讨论】:

  • 这只是部分好,因为 aLenght - 1 和 bLenght - 1 不再覆盖数组的整个长度。
  • 是的,因为你可以找到从 0 到长度 - 2 的下一个连续数字。当你达到长度 -1 时,没有下一个数字来检查它是否连续。
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 2016-01-03
相关资源
最近更新 更多