Найти, является ли строка палиндромом или нет. Ограничения: не хранить строку в какой-либо дополнительной переменной

Проверьте код, который я пробовал

введите описание изображения здесь

Мой вопрос немного отличается от других. Я хочу сделать эффективный код для палиндрома. Итак, я добавил некоторые ограничения. Ограничения: Нет сохранения строки в какой-либо дополнительной переменной. Используйте только один цикл. Я пробовал это в php, но он не рендерит вывод. Я использовал ту же логику на изображении. Я новичок в php. Мне нужна помощь, чтобы проверить правильность моего кода, если он неправильный, какие изменения могут быть внесены? Независимо от того, является ли это php или любым другим языком oops, мне просто нужно проверить правильность моей логики.

Код PHP:

class user{
public  function __construct(){
$this->palindrome();

}

public function palindrome(){
str ="abba";
i=0;
while(str[i] == str[strlen(str-1)-i])
{
i++;
}
if(i > strlen(str)/2)
{
return 0;
}
}}
$obj = new user;

-2

Решение

Сохраняя свою логику, исправил синтаксические ошибки.

<?php

class user {

public function __construct() {
if ($this->palindrome()) {
echo 'Yes, Palindrome';
} else {
echo 'Not a palindrome';
}
}

public function palindrome() {
//Need $ symbol
$str = "abba";

$i = 0;
//                                 \/
while ($str[$i] == $str[strlen($str) - ($i + 1)]) {
$i++;

if ($i > strlen($str) / 2) {
return 1;
}
}
return 0;
}

}

;

$obj = new user();
0

Другие решения

Несколько мелких ошибок:

str[strlen(str-1)-i] => str[strlen(str)-1-i])
И вы не прекращаете цикл, когда проверка завершена.
Вы можете переместить оператор if в цикл и вернуть true.
Или используйте цикл for 0 -> length / 2 и возвращайте false, если символы не равны.

0

Я изменил структуру, но сохранил твою логику.

<?php

class User {
private $str;

public function __construct($str) {
$this->str = $str;
}

public function palindrome() {
$i = 0;
while ($this->str[$i] == $this->str[strlen($this->str) - ($i + 1)]) {
$i++;

if ($i > strlen($this->str) / 2) {
return 1;
}
}
return 0;
}

}

$obj = new User("abba");

echo $obj->palindrome(); // can be zero or one
0
По вопросам рекламы [email protected]