2017-10-04 41 views
-2

字符串检查我试图查找字符串是否是回文或not.Constrains:没有存储任何额外的变量

enter image description here

我的问题是比别人有点不同的代码。我想为回文提供一个高效的代码。所以我添加了一些约束.Constrains:没有将字符串存储在任何额外的变量中。只使用一个循环。我已经在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; 
+0

解决方案是否需要OO? – AndyG

+0

nope.It罚款,如果它的程序。我会尽量将它转换为oo后。 – Ked

+0

谢谢。将来尝试只使用必要的标签。当你标记一堆语言并且不需要任何语言时,大多数人认为它是“垃圾邮件标签”。 – AndyG

回答

0

保持您的逻辑,纠正语法错误。

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

它可以工作,但我仍然困惑是否所有的约束都满足。 – Ked

+0

我认为你的逻辑只使用一个循环,只有一个变量用于存储字符串。所以它可能是。 – tan

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 
相关问题