$isPalindrom = true; } return $isPalindrom; } $str = "Потенциальны палиндром вводится сюда."; $length = $originalLength = mb_strlen($str, 'UTF-8'); $n = 0; while ($length > 1) { $chStr = mb_substr($str, $n, $length, 'UTF-8'); $chStr = str_replace(" ", "", $chStr); if (mb_strlen($chStr, 'UTF-8') == 0 && $length == $originalLength) { //Это условие может быть выполенно только в первую итерацию цикла while, т.к. далее $length будет только уменьшаться. echo "В проверяемой строке нет символов , кроме пробелов. Приложение будет остановлено"; break; } else { if (isPalindrom($chStr)) { break; } else { if ($n + $length < $originalLength) { $n++; } else { $length--; $n = 0; if ($length == 1) { break; } } } } } echo mb_substr($str, $n, $length, 'UTF-8');
// Да се извежда съобщение дали въведеното число е палиндром. // Пример: 12321 // Изход: 12321 да. // Пример: 12578 // Изход: 87521 не. // Използвайте рекурсия $result = ''; $number = 12121; function isPalindrom($number) { $inputNumber = $number; $number = (string) $number; $len = strlen($number); function reverse($number, $len) { if ($len == 0) { return ''; } $len = strlen($number); $result = $number % 10; $number = (int) ($number / 10); $len--; $number = (string) $number; return $result . reverse($number, $len); } $reverseNumber = (int) reverse($number, $len); //var_dump($reverseNumber); return $inputNumber == $reverseNumber ? "Изход {$reverseNumber} да" : "Изход {$reverseNumber} не"; } echo isPalindrom($number);
} else { return false; } } if ($isPalindrom = isPalindrom($input_str)) { $isPalindrom = true; $out_str = $input_str; } else { for ($i = 0, $len = mb_strlen($input_str); $i < $len; $i++) { $str = mb_substr($input_str, $i, $len); for ($j = mb_strlen($str), $len_str = 0; $j >= $len_str; $j--) { if ($j < $len_out_str) { break; } $sub_str = mb_substr($str, 0, $j); if (isPalindrom($sub_str) && ($len_sub_str = mb_strlen($sub_str)) > 1) { if ($len_out_str < $len_sub_str) { $out_str = $sub_str; $len_out_str = $len_sub_str; break; } } } } } if (!$isPalindrom && !$out_str) { $out_str = mb_substr($input_str, 0, 1); } } ?>
return join('', array_reverse($ar[0])); }; if ($str === $rev($str)) { return true; } else { return false; } } else { die("Входные данные не являются строкой!"); } } /* * проверка работы функции isPalindrom($str) */ echo isPalindrom('фау уаф') . '<br>'; echo isPalindrom(' фау уаф ') . '<br>'; echo isPalindrom(' фаууаф ') . '<br>'; echo isPalindrom('фаафы') . '<br>'; echo isPalindrom('фааф') . '<br>'; echo isPalindrom('ф') . '<br>'; echo isPalindrom('фф') . '<br>'; echo isPalindrom('фаууаф') . '<br>'; echo isPalindrom(' фау уаф ') . '<br>'; echo isPalindrom('фауцуаф') . '<br>'; echo isPalindrom('фауйлдуаф') . '<br>'; echo isPalindrom(' ddssdd ') . '<br>'; echo isPalindrom(true) . '<br>'; /* end */ ?> </body> </html>