3

如何在不使用任何额外内存变量的情况下将 $str= "hello\n" 反转为 "olleh\n" ?

我查找了预建函数,但它们都使用内存,而且,我认为字符串是不可变的,所以基本上这可以在没有任何调整的情况下完成,或者创建一个新字符串是唯一的选择吗?

4

3 回答 3

3

我认为 PHP 中没有什么是不可变的。 所以

$str = strrev($str);

可能会有一些用处。

害怕微优化,因为它会花费你所有的时间,没有真正的结果!:)

于 2013-09-27T16:30:35.200 回答
3

我可能忽略了一些东西,但如果你所有的行都以\n我认为这可能是最短的方法:

$str = strrev( trim( $str ) ) . "\n";

不过,我不确定涉及多少内存。

于 2013-09-27T16:41:10.187 回答
0

你在这里说多少“额外记忆”?PHP 有一个简洁的函数来为你翻转字符串:strrev()

只需使用

$str = strrev($string);

如果你真的想要,你可以编写一个循环来做几乎相同的事情,但这会占用内存。

<?php
            $string = trim("Some Random string");
            // string length
            $len = strlen($string);
            // make string array
            $stringExp = str_split($string);
            // Loop through and print backwards
            for ($i = $len - 1; $i >= 0; $i--) {
                echo $stringExp[$i];
            }
            ?>
于 2013-09-27T16:36:36.303 回答