就像20一样,我不断收到内存泄漏。我确定我只是没有看到问题是什么,但希望有新眼睛的人能告诉我我哪里出错了。
- 在作品内部,假设用一个句子并在每个单词后面加一个逗号,反转单词而不移动它在句子中的位置。
function bassAckwards($input)
{
//$inputLen = strlen($input);
$stringEnd = 0;
$findme = ',';
$flag1 = true;
$tempOffset = 0;
$string = "";
//Start loop, as long as flag is true
while($flag1 == true){
//find position of next ","
$pos = strpos($input, $findme, $tempOffset);
//If $pos is null end loop and return string.
if($pos == false){
$flag1 = false;
}
else{
//$pos is not null so create inner loop and add to string
for($reverse = $pos--; $reverse > $stringEnd; $reverse--){
$string = $string . substr($input, $reverse); // < ------ TempStr will add in substr, which will be added to $string
}
}
$stringEnd = $pos;
$tempOffset = $pos + 1;
}
return $string;
}
print bassAckwards("Php,Cookies,Arrays,Mysql,LAMP");
答案 0 :(得分:1)
你的代码在性能方面非常糟糕,试试这个
function bassAckwards($input)
{
$findme = ',';
$input = explode($findme, $input);
foreach ($input as $i => $word) {
$input[$i] = strrev($word);
}
return implode($findme, $input);
}
print bassAckwards("Php,Cookies,Arrays,Mysql,LAMP");
答案 1 :(得分:0)
你的问题可能是由于这个:
for($reverse = $pos--; $reverse > $stringEnd; $reverse--){
更准确地说:
$reverse = $pos--;
更准确地说:
$pos--;
导致递归循环,导致$ string变得大于内存量
我会做这样的事情,但我不确定你要做什么。 expample输出会有所帮助。
代码未经测试
如果您想要翻转单词,请执行此操作。
如果你想反转每个角色......&lt;&lt; \ br&gt;
替换
$words = explode(' ',substr($input,$e,$s-$e));
用
$characters = str_split(substr(($input,$e,$s-$e));
反向例程:
$e = 0;
while(true){
$s = strpos($input, ',', $e);
if ($s){
$words = explode(substr($input,$e,$s-$e));
$words = array_reverse($words);
foreach($words as $val){
$reverseStr .= $val;
}
}
else{
break;
}
$e = $s+1;
}