我接受了一次面试,一个看起来很简单的问题在我脑海中没有出现。我只想得到答案,因为我已经尝试了很多,但找不到解决方案。
我必须像一样在对面写一句话
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;