How to find repeating sequence of Integers in an array of Integers?

后端 未结 4 1266
清酒与你
清酒与你 2021-01-07 14:52

How to find repeating sequence of Integers in an array of Integers?

00 would be repeating, so would 123123, but 01234593623 would not be.

I have an idea to h

4条回答
  •  误落风尘
    2021-01-07 15:26

    @MiljenMikic answer's is great, especially since the grammar isn't actually regular. :D

    If you want to do it on an array in general, or want to understand it, this does pretty much exactly what the regex does:

    public static void main(String[] args) {
        int[] arr = {0, 1, 2, 3, 2, 3}; // 2, 3 repeats at position 2.
    
        // for every position in the array:
        for (int startPos = 0; startPos < arr.length; startPos++) {
            // check if there is a repeating sequence here:
    
            // check every sequence length which is lower or equal to half the
            // remaining array length: (this is important, otherwise we'll go out of bounds)
            for (int sequenceLength = 1; sequenceLength <= (arr.length - startPos) / 2; sequenceLength++) {
    
                // check if the sequences of length sequenceLength which start
                // at startPos and (startPos + sequenceLength (the one
                // immediately following it)) are equal:
                boolean sequencesAreEqual = true;
                for (int i = 0; i < sequenceLength; i++) {
                    if (arr[startPos + i] != arr[startPos + sequenceLength + i]) {
                        sequencesAreEqual = false;
                        break;
                    }
                }
                if (sequencesAreEqual) {
                    System.out.println("Found repeating sequence at pos " + startPos);
                }
            }
        }
    }
    

提交回复
热议问题