Find whether a string is palindrome or not.Constrains: 不将字符串存储在任何额外的变量中

Find whether a string is palindrome or not.Constrains: No storing the string in any extra variable

查看我试过的代码

我的问题与其他问题略有不同。我想为 palindrome.So 编写一个有效的代码我添加了一些 constrains.Constrains:没有将字符串存储在任何额外的 variable.Use 中只有一个 loop.I 在 [=27= 中尝试过],但它不渲染输出。我在 image.I 中使用了相同的逻辑,我是 php.I 的新手,需要一些帮助来检查我的代码是否正确,如果错误可以进行哪些更改?无论是 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;

几个小错误:

str[strlen(str-1)-i] => str[strlen(str)-1-i])
当检查完成时,您不会终止循环。 您可以将 if 语句移动到循环中并且 return 为真。 或者使用 for 循环 0 -> length/2 和 return false 如果字符不相等。

保持逻辑,更正语法错误。

<?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();

我改变了结构但保持了你的逻辑。

<?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