Opgave i Javabog

Tags:    java

Hej jeg har Javabogen af Jakob Nordfalk. Jeg er kommet til en opgave der lyder:

"Skriv et program, der undersøger, om en tekst er et palindrom, dvs. med samme stavning forfra og bagfra (som f.eks. "regninger", "russerdressur", "vær dog god ræv").
(vink: Træk de enkelte tegn ud af strengene med substring(n,n+1) og husk, at strengobjekter skal sammenlignes med .equals()-metoden: s1.equals(s2))."

Jeg forstår ikke det med "substring(n,n+1)", er der nogen der har en ide?

Desuden kan opgaven findes her (Miderst på siden/3.4.6):
http://javabog.dk/OOP/kapitel3.jsp




Hej Frederik,

String substring (int startindeks, int slutindeks) "hvad er delstrengen fra x til y?"
giver en ny streng, som er en del af denne streng. Delstrengen starter ved startindeks og slutter ved slutindeks (til og med slutindeks-1).



String toLowerCase () "hvordan ser du ud med små bogstaver?"
giver en ny streng, som er identisk med denne streng, bortset fra at alle store bogstaver er erstattet med små.



int length () "hvad er din længde?"
giver længden af (antal tegn i) strengen.



Du benytter length til at finde halvdelen af strengens længde, substring til at finde den forreste og bagerste halvdel hhv. og efter at have benyttet toLowerCase på begge checker du med equals.

Med venlig hilsen
Ieet

Ps. Husk at bagerste streg skal vendes




Indlæg senest redigeret d. 06.02.2008 11:40 af Bruger #12836
Kunne man ikke lave det smart ved at lave en for løkke der kørte indtil midten af teksten, og hvor hvert element spørge om elementet på plads (længde minus index) er lig med det bogstav du står med nu?

eks. (er C# har ikke lavet JAva længe, men det skulle ca. være det samme):

string myString = "regninger";
int middle = myString.Length / 2;
bool isPalindrome = true;
for(int i=0;i<middle;i++)
{
if(myString != myString[myString.Length - i])
{
isPalindrome = false;
}
}

Burde det ikke virke? Har ikke testet det, men ideen er holdbar.




Kunne man ikke lave det smart ved at lave en for løkke der kørte indtil midten af teksten, og hvor hvert element spørge om elementet på plads (længde minus index) er lig med det bogstav du står med nu?

eks. (er C# har ikke lavet JAva længe, men det skulle ca. være det samme):

Fold kodeboks ind/udKode 


Burde det ikke virke? Har ikke testet det, men ideen er holdbar



Mange tak for svarende.

Lige et spørgsmål til Ieet,
De 2 stenge vil så være forskellige fordi de er spejlvendte, ikk?
Hvordan vender man dem?

Ellers er mine svar besvaret =D
Tak Frederik



Mange tak for svarende.

Lige et spørgsmål til Ieet,
De 2 stenge vil så være forskellige fordi de er spejlvendte, ikk?
Hvordan vender man dem?

Ellers er mine svar besvaret =D
Tak Frederik


Det gør du ikke.
Formattér først strengen, så alle bogstaver er små, og alle mellemrum og kommaer (alle ikke-alfabetiske tegn) er fjernet.
Tjek derefter hvert tegn i den første halvdel op imod dem i den anden:
Fold kodeboks ind/udKode 




Mange tak alle sammen!
Frederik



t