Делал задание на проверку палиндром строка или нет. В интернет смотрел и код у всех очень большой и не очень понятен мне. Я сделал сам и получилось как-то очень мало кода. Может я сделал что-то не то? Вроде ж работает и проверяет. Подскажите.
$str = "A nut for a jar of tuna";
$str = strtolower(str_replace(" ","",$str));
for($i = 0; $i < strlen($str); $i++){
$left .= $str[$i];
$right = $str[$i].$right;
}
if($left == $right){
echo "$str - это Палиндром";
}else{
echo "$str - Это не Палиндром";
}
В целом подход верный, но вот цикл
for($i = 0; $i < strlen($str); $i++){
$left .= $str[$i];
$right = $str[$i].$right;
}
можно заменить на метод strrev который переворачивает строку вот дока: http://php.net/manual/ru/function.strrev.php Но если интересует нативный подход, то для проверки слова на палиндром достаточно знать, что одна половина строки равна другой И псевдо код примерно будет выглядить так
function isPalindrome (text)
if text is null
return false
left ← 0
right ← text.length - 1
while (left < right)
if text[left] is not text[right]
return false
left ← left + 1
right ← right - 1
return true
Ещё вариант в коллекцию ответов (работает так же и с кириллицей) :
echo palindrome('А роза упала на лапу Азора'); // "Палиндромная строка"
function palindrome($str) {
$str = str_replace(' ', '', mb_strtolower($str, 'UTF-8'));
return $str == join(array_reverse(preg_split('||u', $str)))
? 'Палиндромная строка' : 'Простая строка';
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости