From d5ad7082a1d4b8757f6553c998b2a9403b6e078f Mon Sep 17 00:00:00 2001 From: Lothar Buchholz Date: Sat, 16 May 2020 22:14:58 +0200 Subject: [PATCH] optimized sample solution --- src/main/java/Solution.java | 47 +++++++++++++++++++-------------- src/test/resources/testdata.csv | 4 +++ 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/main/java/Solution.java b/src/main/java/Solution.java index 5c21852..94d3a37 100644 --- a/src/main/java/Solution.java +++ b/src/main/java/Solution.java @@ -1,27 +1,34 @@ import java.util.*; -import java.io.*; -import java.math.*; - -import org.apache.commons.collections4.*; -import org.apache.commons.lang3.*; -import org.apache.commons.math3.*; /** - * Template code to help you parse the standard input + * Template code to help you parse the standard input * according to the problem statement. **/ class Solution { - - public static void main( String[] args ) { - // hint: read values via Scanner methods - Scanner in = new Scanner( System.in ); - - // code your solution here - - // use error to write to console - System.err.println( "debug" ); - - // Write result with System.out.println() - System.out.println( "value" ); - } + + public static void main( String[] args ) { + // hint: read values via Scanner methods + var scanner = new Scanner( System.in ); + + // code your solution here + Map lastOccurrences = new HashMap<>(); + + int startIndex = 0; + int maxLength = 0; + int index = 0; + + while ( scanner.hasNext() ) { + Integer previousOccurrence = lastOccurrences.put( scanner.next(), index++ ); + if ( previousOccurrence != null ) { + if ( previousOccurrence >= startIndex ) { + maxLength = Math.max( maxLength, index - 1 - startIndex ); + startIndex = previousOccurrence + 1; + } + } + } + maxLength = Math.max( maxLength, index - startIndex ); + + // Write result with System.out.println() + System.out.println( maxLength ); + } } diff --git a/src/test/resources/testdata.csv b/src/test/resources/testdata.csv index 829a68e..6f634c2 100644 --- a/src/test/resources/testdata.csv +++ b/src/test/resources/testdata.csv @@ -2,6 +2,10 @@ a, 1 a b, 2 a a, 1 f s f e t w e n w e, 5 +s f e t w s l o p q r, 10 +s f e t w s f e t l o, 7 +s f e t w s w t e f s, 5 +s f e t w s w t e f s l, 6 k i u w y x f l e c g, 11 b u e v l w u d t r a b q x a h x b y s y w w s k, 12 z d k g x p a f h b c p y r y o r y k k o n u t h, 11