Java Rekursiv 2 Strings vergleichen

Diskutiere Java Rekursiv 2 Strings vergleichen im Programmierung Forum im Bereich Programmierung; Hab schon einiges an Java Erfahrung. Hab da eine alte Klausur von der FH und würde gerne wissen, wie ich 2 Strings rekusriv vergleiche. Hier mal...
#1
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
Hab schon einiges an Java Erfahrung. Hab da eine alte Klausur von der FH und würde gerne wissen, wie ich 2 Strings rekusriv vergleiche. Hier mal die Anageb:

geg: 2 STrings s1 und s2 beliebiger Länge. Rekursive Funktion soll true zurückgeben, wenn beide gleich sind.

so soll es aussehen.

Code:
static boolean recfunktion(String s1, String s2) {

}
Hab schon per google gesucht, aber finde nichts. Alles was ich finde, ist rekusriv iregnwas mit int-werten machen. Das kann ich, aber nicht mit Strings.

Hoffe jemand weis da was.
 
#2
DerZong

DerZong

MODERATOR/FAQ-Team
Team
Dabei seit
12.10.2004
Beiträge
4.663
Alter
40
Da ich davon ausgehe, dass nicht die Funktion String.equal(String) verwendet werden soll, musst du mehrere Dinge prüfen:

  • Zu erst überprüfen, ob die Länge der Strings gleich ist ( String.length() ) - wenn ungleich, dann muss er ja sowieso nicht weiter machen :hehe
  • Dann nacheinander jedes einzelne Zeichen der Reihe nach vergleichen ( String.charAt(Stelle) ) - im Prinzip egal, wo du dabei anfängst - nur zweckmäßig nicht irgend wo in der Mitte :hehe
  • Sind diese gleich, so die Methode wieder aufrufen - diesmal aber den String abzüglich der schon geprüften Stelle ( String.substring(Beginn, Ende) )
  • Jeweilige Abbruchbedingungen sollten sein, dass keine Stelle des Ursprungsstrings mehr über ist, die verglichenen Stellen unterschiedlich sind, oder aber, dass die Strings eine unterschiedliche Länge haben.
 
#3
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
hab so was im Kopf

Code:
boolean recfunction(String s1, String s2){
// hier prüfen ob länge gleich ist

  if(s1.charAt(1)==s2.charAt(1)){
         recfunction(s1.substring(1), s2.substring(1))
         return true
   }
Teste später mal
 
#4
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
PHP:
public class Rekursion {
static int x = 0;
	static boolean recCompare(String s1, String s2) {
		
		//System.out.println(s1+s2);
		System.out.println(x++);
		
		if(s1.length() != s2.length())
			return false;
		
		
		while (s1.charAt(0)==s2.charAt(0)){
			
			if(s1.length()!=0 || s2.length() != 0)
				System.out.println(s1+s2);		
		
			 return recCompare(s1.substring(1), s2.substring(1));
		}
				
		return false;
		
	}
	
	public static void main (String... args) throws IOException {
	
		String s1 = "Hallo";
		String s2 = "Hallo";
		
		System.out.println( recCompare(s1,s2) );
		
		char last  = s1.charAt( s1.length() - 1) ;
		
		System.out.println(last);
		
		
	}
}
Bis auf das, das mir immer eine StringIndexOutOfBoundsException ( if(s1.length()!=0 || s2.length() != 0) )wirft. So sollte es doch aussehen oder???
 
#5
DerZong

DerZong

MODERATOR/FAQ-Team
Team
Dabei seit
12.10.2004
Beiträge
4.663
Alter
40
Denke mal, die IndexOutOfBoundsException bekommst du, da die Rekursion auch dann noch ausgeführt werden soll, wenn im String eigentlich keine Zeichen mehr drin sein können. Solltest also noch vor dem rekursiven Aufruf prüfen, ob der String noch mindestens 1 Zeichen lang ist ;)
 
#6
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
Alles klar. aber die rekursion stimmt so, oder?
 
#7
DerZong

DerZong

MODERATOR/FAQ-Team
Team
Dabei seit
12.10.2004
Beiträge
4.663
Alter
40
Denke, dass es so funktionieren sollte, habs selber auch nochmal nachgebaut, und läuft (nagel mich aber nicht drauf fest, wenn der Code nicht optimal ist/abläuft :hehe)
PHP:
public class Rekursion { 
static int x = 0; 
    static boolean recCompare(String s1, String s2) { 
         
        //System.out.println(s1+s2); 
        x++; 
         
        if(s1.length() != s2.length()) 
            return false; 
        if(s1.length()==0 && s2.length()==0)
        	return true;
         
        while (s1.length()>0 && s2.length()>0 && s1.charAt(0)==s2.charAt(0)){ 
             
            if(s1.length()!=0 || s2.length() != 0) 
                //System.out.println(s1+s2);         
            if (s1.length() != 0 && s2.length() != 0)
            	return recCompare(s1.substring(1), s2.substring(1));
        } 
                 
        return false; 
         
    } 
     
    public static void main (String[] args) { 
     
        String s1 = "Hallohallöle"; 
        String s2 = "Hallohallöle"; 
        boolean vergleich = recCompare(s1,s2) ; 
        System.out.println("Vergleich zweier Strings");
        System.out.println("String 1:\t" + s1);
        System.out.println("String 2:\t" + s2);
        System.out.println("Ausgang des Vergleichs: "+vergleich);
        System.out.println("Durchläufe: " + x);
    } 
}
 
#8
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
Perfekt. Haut alles hin. Vielen Dank
 
#9
H

hacklschorsch

Threadstarter
Dabei seit
09.03.2004
Beiträge
1.177
In einer der Letzten Klausuren war mal eine Rekursion daran die so ausgesehen hat. ( soweit ich mich erinnern kann )

rek(Rational a, Rational b)

Man sollte vergleichen ob beide gleich sind. Mehr stand da nicht.

Weis jemand noch andere gute Rekursionsaugaben.
Fibunacci, Hanoi, Sum sind kein Problem!
 
Thema:

Java Rekursiv 2 Strings vergleichen

Java Rekursiv 2 Strings vergleichen - Ähnliche Themen

  • Java Script Fehler bei (erneuter) Aktivierung von Windows 7

    Java Script Fehler bei (erneuter) Aktivierung von Windows 7: Habe versucht Windows per Telefon sowie mit Internet Explorer, Firefox und Chrome zu aktivieren doch es funktioniert mit keinem Browser. Mit...
  • Java App startet nicht mehr nach letztem Windows 10 Update

    Java App startet nicht mehr nach letztem Windows 10 Update: Liebe Community, ich verwende eine Java App (Unternehmensplanspiel von Topsim), die bis zum letzten Update von Windows 10 letzte Woche unter JRE...
  • firefox download java plugin aktivieren?

    firefox download java plugin aktivieren?: Hallo zusammen Ich habe Firefox 58.04 möchte gerne java plugin installieren, aber welche muss man installieren? woher kann man herunterladen...
  • Plötzlich kein Ton mehr nach Java Script Update bzw.

    Plötzlich kein Ton mehr nach Java Script Update bzw.: Guten Tag. Vor ein paar Tagen erhielt ich Mitteilung, dass Updates für Adobe Flashplayer und für Java Script zur Verfügung stehen. Habe beides...
  • Java Ordner löschen?

    Java Ordner löschen?: Hallo zusammen, vor einiger Zeit habe ich aus Sicherheitsgründen Java deinstalliert. Brauche es ansonsten auch nicht. Nun fand ich im Explorer...
  • Ähnliche Themen

    • Java Script Fehler bei (erneuter) Aktivierung von Windows 7

      Java Script Fehler bei (erneuter) Aktivierung von Windows 7: Habe versucht Windows per Telefon sowie mit Internet Explorer, Firefox und Chrome zu aktivieren doch es funktioniert mit keinem Browser. Mit...
    • Java App startet nicht mehr nach letztem Windows 10 Update

      Java App startet nicht mehr nach letztem Windows 10 Update: Liebe Community, ich verwende eine Java App (Unternehmensplanspiel von Topsim), die bis zum letzten Update von Windows 10 letzte Woche unter JRE...
    • firefox download java plugin aktivieren?

      firefox download java plugin aktivieren?: Hallo zusammen Ich habe Firefox 58.04 möchte gerne java plugin installieren, aber welche muss man installieren? woher kann man herunterladen...
    • Plötzlich kein Ton mehr nach Java Script Update bzw.

      Plötzlich kein Ton mehr nach Java Script Update bzw.: Guten Tag. Vor ein paar Tagen erhielt ich Mitteilung, dass Updates für Adobe Flashplayer und für Java Script zur Verfügung stehen. Habe beides...
    • Java Ordner löschen?

      Java Ordner löschen?: Hallo zusammen, vor einiger Zeit habe ich aus Sicherheitsgründen Java deinstalliert. Brauche es ansonsten auch nicht. Nun fand ich im Explorer...
    Oben