2017-10-04 3 views
-2

supplémentaire Vérifiez le code que j'ai essayéTrouver si une chaîne est palindrome ou not.Constrains: Pas de stockage de la chaîne dans une variable

enter image description here

Ma question est peu différent que d'autres. Je veux faire un code efficace pour palindrome.So j'ai ajouté quelques contraintes.Constraints: Pas de stockage de la chaîne dans aucune variable supplémentaire.Utilisez une seule boucle.J'ai essayé en PHP, mais il ne rend pas la sortie. J'ai utilisé la même logique dans l'image.Je suis nouveau à php.J'ai besoin d'aide pour vérifier mon code est correct, si faux quels changements peuvent être faits? Peu importe si c'est php ou tout autre langage oops, j'ai juste besoin pour vérifier si ma logique est bonne.

Code 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

La solution doit-elle être OO? – AndyG

+0

nope.Its bien si son procedural.I va essayer de le convertir en oo après. – Ked

+0

Merci. À l'avenir, essayez d'utiliser uniquement les balises nécessaires. Lorsque vous marquez un tas de langues et que vous n'en avez pas besoin, la plupart considèrent qu'il s'agit de «tags de spamming». – AndyG

Répondre

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

Cela fonctionne, mais je suis toujours confus si toutes mes contraintes sont satisfaites. – Ked

+0

Je pense que votre logique n'utilise qu'une seule boucle et qu'une seule variable pour stocker la chaîne. donc ça pourrait être. – tan

0

Quelques erreurs mineures:

str[strlen(str-1)-i] =>str[strlen(str)-1-i])
Et vous ne résiliez pas la boucle lorsque la vérification est terminée. Vous pouvez déplacer l'instruction if dans la boucle et renvoyer true. Ou utilisez une boucle for 0 -> length/2 et renvoyez false si les caractères ne sont pas égaux. Garder votre logique, a corrigé les erreurs de syntaxe

0

J'ai changé la structure mais j'ai conservé votre logique.

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