在不使用内置函数的情况下颠倒句子中单词的顺序


Reverse order of words in a sentence without using built in functions

我接受了一次面试,一个看起来很简单的问题在我脑海中没有出现。我只想得到答案,因为我已经尝试了很多,但找不到解决方案。

我必须像一样在对面写一句话

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

不应使用PHP 的任何内置功能

感谢

编辑

我做了这个

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

结果是

dianuJ sI emaN yM

需要更多调整

<?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;
?>
<?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];
}
?>

实际上,使用控制结构是可能的。也没有斯特伦。它只会产生一个通知级别的错误。

我确信它可以做得更好,但这里有一个快速解决方案,没有任何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 ' ';
 }

试试这个:

function reverse_string($str) {
  while ($str[$i]) {
    if ($str[$i] != '~') {
      $rstr = $str[$i] . $rstr;
      $str[$i] = '~';
    }
    ++$i;
  }
  return $rstr;
}
<?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

这样可以减少循环次数,从而节省的性能

<?php
$str = "My Name is Aman jain";
$p = explode(' ',$str);
for ($i= (count($p)-1); $i >= 0  ; $i--) { 
   echo $p[$i]. ' ';
}

请检查此项:

$str = "NAHUAHC PATARP NAMUSNA si eman YM";
$reverseStr = "";
$length = 0;
while (isset($str[$length])) {
    $reverseStr = $str[$length] . $reverseStr;
    $length++;
}
print $reverseStr;
echo "'n";

请查看以下代码:反转字符串

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

上述代码输出为:

gfedcba

您可以使用for cycle 反转整个字符串

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

然后,查找每个单词(在空白之间),并使用相同的算法反转这些单词。

从末尾到末尾,逐个字符(带[])遍历输入字符,搜索空格(或任何白色字符)。如果找到,请保存该位置。找到第二个时,将两个位置之间的字符添加到输出中。如果你也能使用substr:,你至少需要strlen

<?php
$input = "My Name Is Junaid";
$output = "";
$lastpos = strlen($input);
for ($i = strlen($input) - 1; $i >= 0; $i--) {
  if ($input[$i] == ' ') {
    if (strlen($output) > 0) $output .= ' ';
    $output .= substr($input, $i + 1, $lastpos - $i);
    $lastpos = $i;
  }
}
echo $output;