Avatar billede mccookie Seniormester
28. november 2006 - 20:14 Der er 7 kommentarer og
1 løsning

Test om en streng er et palindrom

Hejsa

Jeg har lavet et forslag, kan det laves bedre/anderledes?

$test_streng = str_replace(" ","",strtolower($_REQUEST['palindrom']));
$str_len    = strlen($test_streng);

while($str_len >= 0) {
$slut_streng .= $test_streng[$str_len];
$str_len--;
}

if($slut_streng == $test_streng) { echo "OK"; }
Avatar billede barklund Nybegynder
28. november 2006 - 21:03 #1
preg_match er nok hurtigere:

if (preg_match("#^(.*)\\1$#i",str_replace(" ","",$_REQUEST['palindrom'])) === true) {
    echo "OK";
}

:)

--
Morten Barklund
Avatar billede coderdk Praktikant
28. november 2006 - 21:10 #2
Her er et forslag:

    $ord = strtolower( $_REQUEST['palindrom'] );
    $e = strlen( $ord );
    $b = 0;
    while ( $b <= $e+1 && $ok = ( $ord[$b++] == substr( $ord, --$e, 1 ) ) )
        ;   
    echo $ok ? "OK" : "NOPE";

Hvis du også vil detektere anderledes palindromer som f.eks. "En af dem, der red med fane" kan du lave:

    $ord = strtolower( $_REQUEST['palindrom'] );

om til:

    $ord = preg_replace( "/[^a-z]/", "", strtolower( $_REQUEST['palindrom'] ) );
Avatar billede coderdk Praktikant
28. november 2006 - 21:11 #3
Orv, det havde jeg slet ikke tænkt på barklund, nice :-D
Avatar billede coderdk Praktikant
28. november 2006 - 21:16 #4
Hmm ved nærmere eftertanke, vil den virke efter hensigten? Jeg kan godt se hvad hensigten er, med backreference, men sammenligner den ikke hele ordet med sig selv i stedet for at vende det om?
Avatar billede coderdk Praktikant
28. november 2006 - 21:23 #5
Barklund, tror ikke den virker ;)

Alternativt:

$ord = preg_replace( "/[^a-z]/", "", strtolower( $_REQUEST['palindrom'] ) );
echo $ord == strrev( $ord ) ? "OK" : "NOPE";

:)
Avatar billede barklund Nybegynder
28. november 2006 - 21:31 #6
coderdk, ohja, min fejl - jeg sad vidst og tænkte på for mange ting :)

Dit sidste forslag tror jeg også er det optimale :)
Avatar billede mccookie Seniormester
01. november 2007 - 00:12 #7
Smid et svar
Avatar billede mccookie Seniormester
01. november 2007 - 00:12 #8
Smid et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester