2017-06-10 6 views
1

Ich versuche lexikographisch kleinsten und größten Teilstring der Länge z zu finden, die von der Eingabe genommen wird. Ich weiß nicht warum, aber die If-Bedingung funktioniert nicht, wo ich versuche, die minimale Teilkette zu finden.Lexikographisch zwei Strings vergleichen

import java.io.*; 
import java.util.*; 

public class Solution { 

    public static void main(String[] args) { 

     Scanner ip=new Scanner(System.in); 

     String s=ip.next(); 
     int z=ip.nextInt(); 
     String max=""; 
     String mini=""; 
     String x=""; 

     for(int i=0;i<s.length()-z;i++) { 
       x=s.substring(i,i+z); 
       if(x.compareTo((mini))<0) //this is not working 
        mini=x; 

       if(x.compareTo((max))>0) 
        max=x; 
      } 
     System.out.print(mini); 
     System.out.print(max); 
    } 
} 
+0

Wonach fragen Sie? –

+0

siehe den Code, wo ich versuche, minimale Teilzeichenfolge zu finden, es funktioniert nicht – Eduardo

+1

Sie haben zunächst Mini als leere Zeichenfolge deklariert, so dass es sich nicht ändert. Sie sollten sowohl mini als auch max als jede z-Länge Teilzeichenfolge der Eingabezeichenfolge initialisieren. 'mini = max = sstring (0, z);' –

Antwort

1

Das Problem bei der Deklaration der beiden Variablen mini und max

Sie diese bereits als leere Zeichenfolge initialisieren, so wird die Bedingung nicht das erwartete Ergebnis zurück, wenn sie zu x und ihre Werte zu vergleichen nicht

ändern

Sie können sie initialisieren:

mini = s.substring(0, z); 
max = s.substring(0, z); 

bearbeiten:

wenn Sie versuchen, diesen Zustand zu testen:

x.compareTo(("")) es wird immer Rückgabewert größer als 0 so mini nicht auf jeden Fall ändern.