Palindrom

mark

Mitglied
Hallo zusammen,hier ist auch eine frage, die mir Probleme gibt.ich werde froh sein wenn Ihr mir Tipps geben würde wie ich sie am besten löschen konnte.
So sieht die Aufgabestellung aus:
Implementieren Sie einen rekursiven Algorithmus, der für ein char-Feld erkennt, ob es sich
dabei um ein Palindrom handelt oder nicht. Ein Palindrom ist ein Wort, welches vorwärts
und rückwärts gelesen identisch ist. Beispiele: "ABBA", "OTTO". Gross- und
Kleinschreibung braucht nicht berücksichtigt zu werden, "

Mein Code!
Java:
public class Polindrom {
	public static void main(String []args){
		char []a ={'A','B','B','A'};
		for (int i=0; i<a.length;i++){
			
			System.out.print(a[i]+ " ");
			
		}
		   System.out.println();
		System.out.println(poli(a,0,a.length-1))
        }
public static char poli(char []feld,int l,int r){
		int m=(l+r)/2;
		if (l==r){
		return feld[l];
		}
		
		char erg=poli(feld,l,m);
		char erg2=poli(feld,m+1,r);
		if(erg==erg2){
			
				return poli(feld,0,feld.length-1);
				
		}
		return erg2;
		}
	}
	}
wenn ich den Code laufen lassen, bekomme ich nur A raus, ich glaube es liegt an der Rückgabewert, wie kann ich am besten schreiben das ich die Typumwandlung vermiede?
ich habe Boolean gedacht, aber so wie ich vorher gesagt habe 'Typumwandlung' ist echt ein problem
Verbesserung!
Java:
public static char poli(char []feld,int l,int r){
               char temp=0;
		int m=(l+r)/2;
	        char erg=poli(feld,l,m);
		char erg2=poli(feld,m+1,r);
		if(erg==erg2){
			temp=erg+erg2;
                * }
public boolean test(){
     if(poli(a,l,m) !=poli(a,m+1,r){ return false;}
      else{
     return true;
    }
ich bitte um Tipps und verbesserung!
ich bedanke mich im voraus

Mark
 
Zuletzt bearbeitet von einem Moderator:

Ein Keks

Bekanntes Mitglied
ich werde froh sein wenn Ihr mir Tipps geben würde wie ich sie am besten löschen konnte.
merkwürdiger satz...

warum gibts du eigentlich einen char zurück?
naja bin grad zu faul zum erklären:
Java:
	public static void main(String[] args) {
		String[] test = {"otto", "Otto", "otato", "etto", "abcdeba"};
		for(String string: test){
			System.out.println(isPalindrom(string.toCharArray(), 0, string.length()-1));
		}
	}

	private static boolean isPalindrom(char[] chars, int i, int j) {
		if(j-i <= 1) return true;
		if(Character.toLowerCase(chars[i]) == Character.toLowerCase(chars[j])){
			return isPalindrom(chars, i+1, j-1);
		}else{
		       return false;
                }
	}
 

mark

Mitglied
vielen Dank für deine Antwort. d.h die If(j-i<=1) ist solange true auch wenn es auf die minus zu geht? order hält es an wenn j-i=0? sonst war den rest nachvollziehbar.

P.s danke dass du nicht nur meine Programmierung fähigkeiten verbessern tust, sondern auch mein Deutsch Schreibung. Ich bin ja immer noch in der lern prozess, da ich ja nicht von hier bin. Mich stört es nicht wenn du es machst, aber ich werde versuchen so viel ich kann richtig zu schreiben, damit ihr mich auch verstehen können
Grüß mark
 

Ein Keks

Bekanntes Mitglied
ups die zeile
Code:
if(j-i <= 1) return true;
muss
Code:
if(j-i <= 0) return true;
heißen
sie dient dazu dass die rekursion beendet wird wenn i==j oder i>j gilt (man hätte auch
Code:
if(i==j || i>j)
schreiben können)
hoffe damit hat sich die frage erledigt

mark hat gesagt.:
Ich bin ja immer noch in der lern prozess, da ich ja nicht von hier bin.
Dann sei dir der satz natürlich verziehen^^ Deutsch lernen muss verdammt schwer sein. Man versteht ja was du willst, die sätze erscheinen nur manchmal etwas merkwürdig.
Von woher kommst du denn?
 

Landei

Top Contributor
Java:
  public static boolean isPalindrom(String s) {
    return s.length() < 2 || (s.charAt(0) == s.charAt(s.length()-1) 
        && isPalindrom(s.substring(1,s.length()-1)));
  }

Im richtigen Leben:
Java:
  public static boolean isPalindrom(String s) {
    return s.equals(new StringBuilder(s).reverse().toString());
  }
 

Neue Themen


Oben