Vergleichen von Strings

Default

Mitglied
Hallo zusammen!

Ich habe eine Frage und zwar bin ich gerade an einem Code mit welchem ich folgendes Problem lösen soll:

Durch einen Scanner erhalte ich einen int x gefolgt von x Zeilen Strings welche ich dann vergleichen muss. Und zwar ist die Aufgabe, ob durch die Strings ein String erstellt werden kann wobei yes ausgegeben werden soll. Bsp: yes -> abc bcd cde usw.

Weiteres Beispiel:

8
xix
iix
ixe
ixi
irz
rzx
iir
zxe

-> yes

Ich habe bis jetzt den folgenden code jedoch habe ich mühe mit dem Vergleichen...

Ich hoffe mir kann jemand dabei weiterhelfen:

Code:
    public static void testCase() {
        // Input using In.java class
        
       int n = In.readInt(); //Hier erhalte ich die Inputs
        
        
        ArrayList<String> password = new ArrayList<String>(); //Ich möchte die Strings in einer Arraylist abspeichern auf Grund der Laufzeit
        
        for(int i = 0; i <= n; i++) { //Damit möchte ich den Array füllen
        password.add(n);
        
        
        
        // Output using Out.java class
        Out.println(n);
    }

Die fett gedruckten Zeilen sind vorgegebenen. Habe ich die Arraylist überhaupt richtig initialisiert? Denn ich habe den ersten input (bsp: 8) einfach ignoriert nicht?

Vielen Dank für eure Hilfe!!!
 
> Die fett gedruckten Zeilen sind vorgegebenen.

bei mir ist nix fett.

> Habe ich die Arraylist überhaupt richtig initialisiert?

ja, das sieht doch gut aus.

> Denn ich habe den ersten input (bsp: 8) einfach ignoriert nicht?

ja, du musst jetzt in die schleife ein weiteres In.read.... setzen.

nicht vergessen, dass hinter { vom for noch eine } fehlt.
 
> Die fett gedruckten Zeilen sind vorgegebenen.

bei mir ist nix fett.

> Habe ich die Arraylist überhaupt richtig initialisiert?

ja, das sieht doch gut aus.

> Denn ich habe den ersten input (bsp: 8) einfach ignoriert nicht?

ja, du musst jetzt in die schleife ein weiteres In.read.... setzen.

nicht vergessen, dass hinter { vom for noch eine } fehlt.

Vielen Dank für deinen Input! Habe das Ganze nun abgeändert wie folgt:

Code:
    public static void testCase() {
        // Input using In.java class
        
       int n = In.readInt();
 
        //declaring ArrayList with initial size n
        ArrayList<Integer> password = new ArrayList<Integer>(n);
        
        for(int i = 0; i <= In.readInt(); i++) {
        int x = In.readInt();
        password.add(x);
        }
        
        char ch1 = password.charAt(0);
        char ch2 = password.charAt(1);
        char ch3 = password.charAt(2);
        
        for (int i = 0; i <= n; i ++) {
          
        }

Kann ich das so machen? Respektive wie kann ich nun die Strings vergleichen wie in der Aufgabe gefordert?

das int n = In.readInt(); ist vorgeschrieben.
 
Mir ist die gewünschte Logik noch nicht klar.

Das eine Beispiel ist ja:
abc
bcd
cde

Das gilt yes, weil aus den letzten zwei Zeichen des aktuellen Passworts der Anfang des nächsten gebaut werden kann? Und so alle Teile verwendet werden können.

Ist das erst einmal richtig? Spielt die Reihenfolge eine Rolle? Oder kann die beliebig sein?
Also
abc
cde
bcd
wäre auch ok?

Bei dem
xix
iix
ixe
ixi
irz
rzx
iir
zxe

Sehe ich sowas nicht.
xix -> ixi / ixe -> (1) xix und man hätte einen Kreis. (2) mit xe fängt nichts an ...
Daher sehe ich nicht einen Strang, der aufgebaut werden kann aus allen Teilen.
iir > irz > rzx -> zxe wäre da noch ein zweiter Strang, den ich sehe, aber ich kriege die Stränge nicht zu einem zusammen...

Wenn ich den Ablauf aber richtig verstanden habe, dann überleg Dir doch einfach einmal, wie Du das mit Papier und Stift machst. Das wäre der erste Schritt, das nach zu vollziehen. Spiel das mal mit dem abc, cde, bcd durch. Was machst Du, um die Verkettung zu bekommen?
 
Mir ist die gewünschte Logik noch nicht klar.

Das eine Beispiel ist ja:
abc
bcd
cde

Das gilt yes, weil aus den letzten zwei Zeichen des aktuellen Passworts der Anfang des nächsten gebaut werden kann? Und so alle Teile verwendet werden können.

Ist das erst einmal richtig? Spielt die Reihenfolge eine Rolle? Oder kann die beliebig sein?
Also
abc
cde
bcd
wäre auch ok?

Bei dem
xix
iix
ixe
ixi
irz
rzx
iir
zxe

Sehe ich sowas nicht.
xix -> ixi / ixe -> (1) xix und man hätte einen Kreis. (2) mit xe fängt nichts an ...
Daher sehe ich nicht einen Strang, der aufgebaut werden kann aus allen Teilen.
iir > irz > rzx -> zxe wäre da noch ein zweiter Strang, den ich sehe, aber ich kriege die Stränge nicht zu einem zusammen...

Wenn ich den Ablauf aber richtig verstanden habe, dann überleg Dir doch einfach einmal, wie Du das mit Papier und Stift machst. Das wäre der erste Schritt, das nach zu vollziehen. Spiel das mal mit dem abc, cde, bcd durch. Was machst Du, um die Verkettung zu bekommen?

Vielen Dank für deine Antwort!!!

abc
cde
bcd
wäre auch ok!

Nun habe ich aber das Problem, das mir der Compiler
Code:
 ArrayList<Integer> password = new ArrayList<Integer>(n);
als Fehler ausgibt:

Code:
/var/lib/cxrun/projectfiles/Main.java:21: error: cannot find symbol
        ArrayList<String> password = new ArrayList<String>(n);
        ^

Kannst du mir vielleicht einen Tipp geben wie ich das vergleichen kann? Ich habe mir mal substrings erstellt aber irgendwie weiss ich nicht ganz wie ich da vorgehen muss...
 

Zurück
Oben