自己动手实现反转字符串-二分法(PHP实现)

技术备忘 |1年前 |0


二分法遍历次数会比普通的遍历少一半。

例如,我们要反转'abc',在PHP中,可以将这个字符串分解成这样:

    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';

我们用第一个字符跟最后一个了字符调换位置,第二个跟倒数第二个交换位置,实现反转字符串,如果字符串的长度是奇数,则最中间的那个字符是不需要变动位置的。

    str[0] = 'c';
    str[1] = 'b';
    str[2] = 'a';

实现代码:

function strRev($str='') {
    $len = strlen($str);

    $mid = floor($len/2);
    for ($i=0; $i<$mid; $i++) {
        $temp = $str[$i];
        $str[$i] = $str[$len-$i-1];
        $str[$len-$i-1] = $temp;
    }
    return $str;
}

这里只是一个实现思路,然后我去看了 PHP 底层,使用 C 实现的 strrev 这个函数,哎,看不懂。不过 C 实现的比 PHP 快很多。

MeiWJ
A PHP Web Artisan

完善源自用心 細節決定成敗