Problem

DevEye

Erfahrenes Mitglied
Hallo, will das Problem selber Lösen, doch verstehe nicht ganz die Aufgabenstellung. Kann mir the jemand erklären?

------------------------
Aufgabe:
A palindrome is a string that reads the same forward and backward. The PalMeasure of a string is the sum of the lengths of its substrings that are palindromes. Return the PalMeasure of the concatenation of all the strings in the String[] text.

- A substring is a sequence of consecutive characters from a string.
- An entire string counts as a substring of itself.
- Count equal substrings which have different positions as different.

Beispiele:
{"AAA"} = 10
{"AB"} = 2
{"AB", "BA"} = 10
{"AB", "AAA"} = 15
{"AZ", "ZZ", "A"} = 17
 
Also so halb kann ich dir das denk ich erklären, auch wenn mein Englisch nicht das Beste ist :D

Es geht darum, das diese Palindrome Strings sind, die vorwärts und rückwärts gelesen das gleiche ergeben.
Das "PalMeasure" ist eine Zahl, die sich wie folgt ergibt:
Das ist die Summe der Längen von Substrings (eines ganzen Strings) die Palindrome sind.. Wichtig ist hierbei, das alle Substrings zählen, sowohl einzelne Buchstaben als auch doppelte. Und der String als ganzes zählt auch als Substring..

Am ersten Beispiel kann man das noch ganz gut erkennen:
String: AAA
Palindrom 1: AAA (Länge 3)
Palindrom 2: AAA(Länge 1)
Palindrom 3: AAA(Länge 1)
Palindrom 4: AAA(Länge 1)
Palindrom 5: AAA(Länge 2)
Palindrom 6: AAA(Länge 2)

Summe der Längen: 10
Was passiert wenn zwei Strings in dem Array sind hab ich noch nicht so ganz gerafft (Man soll wohl die Verkettung aller Strings in dem Array betrachten..) ^^
Ist wohl ein rekursives Problem wenn ich mir das so anschaue.. ;)

Gruß
Tobias
 
Zuletzt bearbeitet:
Ne ist kein rekursives Problem. Und das mit der Verkettung ist schon richtig.

Ist eigentlich ganz simpel. Hab mir jetzt mal ein bissl Zeit genommen mir die Aufengabenstellung genau anzugucken.

Es geht darum, dass man die einzelnen Strings im String[] durch eine Konkanation zusammenfügt und dann für jeden Teilstring (charAt(x) bis charAt(y)) guckt ob ein Palidrom existiert. Wenn ein Palirom existiert, soll die Länge dieses Teilstrings zu dem Ergebnis addiert werden.

Danke für die schnellen Antworten!
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 */
public class PalindromAnalyzer {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new PalindromAnalyzer().summaryLength(new String[] {
                "AZ", "ZZ", "A" }));
    }

    private int summaryLength(String[] strings) {
        StringBuilder s = new StringBuilder();
        for (String str : strings) {
            s.append(str);
        }

        int sumOfLengths = 0;

        for (int len = s.length(), wordWidth = len; wordWidth > 0; wordWidth--) {
            int position = 0;
            while (position + wordWidth <= len) {
                String subString = s.substring(position, position + wordWidth);
                if (isPalindrom(subString)) {
                    sumOfLengths += subString.length();
                }
                position++;
            }
        }
        return sumOfLengths;
    }

    public static boolean isPalindrom(String s) {
        return new StringBuilder(s).reverse().toString().equals(s);
    }
}

Gruss Tom
 
Hallo DevEye,

wenn man schon selber eine Lösung gefunden hat, sollte man umgehend hier ins Forum posten. War jemand aber doch schneller, schweigt man lieber aus taktischen Gründen und sagt einfach lieb Danke ;) . Das ist besser für die Motivation des Helfenden :-) .


Vg Erdal
 
DevEye hat gesagt.:
Hallo, will das Problem selber Lösen, doch verstehe nicht ganz die Aufgabenstellung. Kann mir the jemand erklären?

1.Wollte keine Lösung ;)

DevEye hat gesagt.:
Ist eigentlich ganz simpel. Hab mir jetzt mal ein bissl Zeit genommen mir die Aufengabenstellung genau anzugucken.

Es geht darum, dass man die einzelnen Strings im String[] durch eine Konkanation zusammenfügt und dann für jeden Teilstring (charAt(x) bis charAt(y)) guckt ob ein Palidrom existiert. Wenn ein Palirom existiert, soll die Länge dieses Teilstrings zu dem Ergebnis addiert werden.

Danke für die schnellen Antworten!

2. Hatte geschrieben, dass ich das herausgefunden hatte was ich wollte!



Werde beim nächstenmal trotzdem dran denken. Danke!
 
Zurück