From d6448478c1922110bf5936ff7e263c38d50a518b Mon Sep 17 00:00:00 2001 From: Hermann Schwarz Date: Sun, 11 Jul 2021 14:29:41 +0200 Subject: [PATCH] Bug in String teilString = s1.substring(j, j+i); MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hallo, hier hat sich ein kleiner Bug eingeschlichen, wahrscheinlich wegen der verwirrenden Logik von sibstring(startIndex, endIndex), nämlich dass der Ausschnitt nicht bis zum endIndex geht, sondern bis zum (endIndex - 1): statt String teilString = s1.substring(j, j+i); müsste sein: String teilString = s1.substring(j, j+i+1); Sonst a) gehen wir am Anfang n-Mal leere Substrings durch b) das letzte Zeichen von s1 wir nie einbezogen --- .../schroedinger/java/kapitel04/GemeinsamerSubstring.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SchroedingerProgrammiertJava/src/de/galileocomputing/schroedinger/java/kapitel04/GemeinsamerSubstring.java b/SchroedingerProgrammiertJava/src/de/galileocomputing/schroedinger/java/kapitel04/GemeinsamerSubstring.java index 0912f75..41789e5 100644 --- a/SchroedingerProgrammiertJava/src/de/galileocomputing/schroedinger/java/kapitel04/GemeinsamerSubstring.java +++ b/SchroedingerProgrammiertJava/src/de/galileocomputing/schroedinger/java/kapitel04/GemeinsamerSubstring.java @@ -12,7 +12,7 @@ public static void main(String[] args) { String gemeinsamerSubstring = ""; for (int i = 0; i < s1.length(); i++) { for(int j = 0; j < s1.length() - i; j++) { - String teilString = s1.substring(j, j+i); + String teilString = s1.substring(j, j+i+1); if(s2.contains(teilString)) { gemeinsamerSubstring = teilString; }