Nyckelord: Metoder
Palindrom
En palindrom är ett ord som förblir oförändrat oavsett om man läser det framlänges eller baklänges. Skriv en metod som kontrollerar om en given textsträng är en palindrom eller ej. Metoden ska returnera true om textsträngen är en palindrom och false i alla andra fall.
Exempel på palindrom: ABBA eller kajak.
Ledtråd
Loopa igenom varje tecken i textsträngen baklänges. Använd
str.charAt(i);
för att plocka ut ett tecken från en textsträng. Exempelvis motsvarar str.charAt(0) första tecknet i textsträngen.
Spara undan varje tecken i en ny textsträng. Jämför sedan den nya strängen med den gamla. Om dessa är lika är textsträngen en palindrom!
Svar
static boolean isPalindrome(String str) {
String palindrome = "";
for(int i = str.length() - 1; i >= 0; i--) {
palindrome = palindrome + str.charAt(i);
}
if(palindrome.equals(str)) {
return true;
} else {
return false;
}
}
Förklaring
Vi loopar igenom textsträngen baklänges med loopen:
for(int i = str.length() - 1; i >= 0; i--) {
palindrome = palindrome + str.charAt(i);
}
I loopen sparar vi undan varje tecken i en ny textsträng palindrome.
Använd sedan equals för att jämföra två textsträngar.
Full programkod blir exempelvis:
public class Uppgift8 {
public static void main(String[] args) {
String text = "ABBA";
if(isPalindrome(text)) {
System.out.println("Textsträngen: " + text + " är ett palindrom.");
} else {
System.out.println("Textsträngen: " + text + " är inte ett palindrom.");
}
}
static boolean isPalindrome(String str) {
String palindrome = "";
for(int i = str.length() - 1; i >= 0; i--) {
palindrome = palindrome + str.charAt(i);
}
if(palindrome.equals(str)) {
return true;
} else {
return false;
}
}
}
Här jämförs texten exakt, inklusive stora/små bokstäver, blanksteg och skiljetecken. Tom sträng räknas som palindrom. Övningen utgår från enkla bokstäver; godtyckliga Unicode-tecken kan behöva behandlas som kodpunkter.