Проверьте, если числа являются последовательными - PullRequest
0 голосов
/ 08 ноября 2018
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 == 0 и 4 == 1 являются последовательными.

1 Ответ

0 голосов
/ 08 ноября 2018

попробуйте

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] && 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...