Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Палиндром


Автор: Source 10.4.2009, 23:34
Здравствуйте!

Помогите пожалуйста новичку с реальзацией PHP-скрипта проверки строки на палиндромность.

В С++ это решается с помощью математических операций, я пытался реализовать это на ПХП, с помощью простых мат.операций и встроенной функции strrev() но у меня не вышло. Байда в том что целочисленные переменные нужно превратить в строковые и потом сравнивать... Мой код считает что все введеные мною данные палиндромны.

Код

// Запишим данные в 2 переменные.
$val = $_POST['poly']; 
$param = strrev($_POST['poly']);

//Проверка на правильность ввода.
//Конечно нужно писать регвыр что бы правильно проверить и удалить спецсимволы и пробелы, но я здесь представил код проще.
if (isset($val) || strlen($val) > 16)
{    
    if (strrev($val) == $param)
    {
        print ("Число $val палиндромно!");
                unset($val, $param);
                        
    }
    else
    {
                print ("Число $val не палиндромно!");
        unset($val, $param);
    }
}
else 
{
    print ('Не надо со мной шутить! Вы должны ввести ТОЛЬКО целое число!');
    unset($val, $param);
}


Подскажите, как вообще можно реализовать проверку на палиндромность на ПХП!


Автор: enof 11.4.2009, 00:00
Сначала написал так:
Код

<?
$str = "404";
$pattern_s = "#";
$pattern_e = "";
$len = strlen($str)/2;
for($i = floor($len); $i > 0; $i--)
{
    $pattern_s .= "(.)";
    $pattern_e .= "\\".$i;
}
if(is_double($len)) $pattern_s .= ".";
$pattern = $pattern_s . $pattern_e . "#";
if(preg_match($pattern, $str))
    echo "Палиндром";
else
    echo "Нет";
?>

Но потом подумал, что все намного проще:
Код

<?
$str = "404";
$len = strlen($str)/2;
$s = substr($str, 0, floor($len));
$e = substr($str, ceil($len));
if($s == strrev($e))
    echo "Палиндром";
else
    echo "Нет";
?>

И тут я понял, что я туплю smile  smile 
Код

$str = "404";
if($str == strrev($str))
    echo "Палиндром";

Автор: Source 11.4.2009, 01:34
Цитата

Код

$str = "404";
if($str == strrev($str))
    echo "Палиндром";



enof, Все гениальное просто. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)