Обратный порядок слов в предложении без использования встроенных функций - PullRequest
2 голосов
/ 28 марта 2012

У меня было интервью, и вопрос, который кажется очень простым, не приходил мне в голову. Просто хочу получить ответ за это, потому что много пытался и не смог найти решение.

Я должен написать предложение в противоположность, как

input => My Name Is Junaid
output => Junaid Is Name My

Не следует использовать ЛЮБУЮ встроенную функцию PHP

Спасибо

EDIT

Я так и сделал

$string = "My Name Is Junaid";
$len = strlen($string);
for($i=$len; $i > 0; $i--){
    echo $string[$i-1];
}

результат

dianuJ sI emaN yM

нужно еще немного подправить

Ответы [ 11 ]

10 голосов
/ 28 марта 2012
<?php

$str = "My Name is Fred";
$i = 0;
while( $d = $str[$i] )
{
    if( $d == " "){

        $out = " ".$temp.$out;
        $temp = "";
    }else{
        $temp.=$d;

    }
    $i++;
}
echo $temp.$out;
?>
6 голосов
/ 03 мая 2014

Попробуйте это:

$str = 'My name is James'; 
$str_arr = explode(' ',$str); 
$i=0; 
for($i=(count($str_arr)-1);$i>=0;$i--){ 
  echo $str_arr[$i].' '; 
}

2 голосов
/ 27 июля 2015
<?php
$name = 'shashank is a good boy';
$i = 0;
while($name[$i] != '')
{
    $i++;
}
$len = $i;
for ($j=$len; $j>0; $j--){
    echo $name[$j-1];
}
?>
1 голос
/ 28 марта 2012

На самом деле это возможно, используя управляющие структуры. Без strlen тоже. Он просто выдаст одну ошибку на уровне уведомления.

Я вполне уверен, что это можно сделать лучше, но вот быстрое решение, без ЛЮБОЙ функции php, только управляющие структуры.

$string = 'My Name Is Junaid';
 $i = 0;
 $output = array('');
 $output_index = 1;
 while (true) {
    $char = $string{$i};
    $i++;
    if ($char == ' ') {
        $output[$output_index] = '';
        $output_index++;
    } elseif ($char === '') {
        break;
    } else {
        $output[$output_index - 1] .= $char;
    }
 }

 for ($i = $output_index; $i--; $i >= 0) {
     echo $output[$i];
     echo ' ';
 }
0 голосов
/ 27 мая 2017

Пожалуйста, взгляните на код ниже: переверните строку

   $str = 'abcdefg';
    $reverseString = '';
    for($i=strlen($str);$i<=strlen($str);$i--){
      $reverseString .= $str[$i];
    if($i==0)
    break;
    }

    echo $reverseString;

Выше приведен код:

gfedcba
0 голосов
/ 22 июля 2016

Пожалуйста, проверьте это:

$str = "NAHUAHC PATARP NAMUSNA si eman YM";
$reverseStr = "";
$length = 0;
while (isset($str[$length])) {
    $reverseStr = $str[$length] . $reverseStr;
    $length++;
}
print $reverseStr;
echo "\n";
0 голосов
/ 30 июля 2015

Таким образом, вы можете уменьшить количество циклов, следовательно, экономия будет эффективна

<?php
$str = "My Name is Aman jain";
$p = explode(' ',$str);

for ($i= (count($p)-1); $i >= 0  ; $i--) { 
   echo $p[$i]. ' ';
}
0 голосов
/ 22 сентября 2014
<?php

$rev = array("vignesh");
    foreach ($rev as $name)
     {
        echo $name[6];
        echo $name[5];
        echo $name[4];
        echo $name[3];
        echo $name[2];
        echo $name[1];
        echo $name[0];
    }

?>

ВЫВОД:

hsengiv

0 голосов
/ 31 июля 2014

Попробуйте это:

function reverse_string($str) {
  while ($str[$i]) {
    if ($str[$i] != '~') {
      $rstr = $str[$i] . $rstr;
      $str[$i] = '~';
    }
    ++$i;
  }
  return $rstr;
}
0 голосов
/ 28 марта 2012

Вы можете перевернуть всю строку, используя для цикла

$str2 = '';
for($i=0;$i<strlen($str);$i++)
    $str2 .= $str[strlen($str)-$i-1];

, а затем найдите каждое слово (между пробелами) и поменяйте местами те же алгоритмы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...