好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】

PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】

关于字符串的逆序排列,最简单的使用PHP函数strrev()的测试代码如下:

header('Content-type: text/html; charset=utf-8'); $str = implode('', range(9, 0)); print '< p><strong>Before reversed: </strong>'.$str.'< /p>'; print '< p>< strong>After reversed: < /strong>'.strrev($str).'< /p>'; /* 输出如下: Before reversed: 9876543210 After reversed: 0123456789 */

如果不用内置的PHP函数strrev(),又该如何实现呢?这里另外给出了3种方法(二分法、循环法、递归法),但没有进行性能测试。

1、二分法

/** * 二分法实现字符串逆序排列 * @param string $str 源字符串 * @return string 返回逆序后的字符串 */ function reverse($str='') {   $len = strlen($str);   //不能使用count或sizeof   $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; }

2、循环法

/** * 循环实现对字符串的逆序排列(效率比二分法低) * @param string $str 源字符串 * @return string 返回逆序后的字符串 */ function reverse($str='') {   $result = '';   for ($i=1; $i<=strlen($str); $i++) {     $result .= substr($str, -$i, 1);   }   return $result; }

3、递归法

/** * 递归实现对字符串的逆序排列(效率低) * @param string $str 源字符串 * @return string 返回逆序后的字符串 */ function reverse($str='') {   static $result = '';   /* 用堆栈来理解递归调用 */   if (strlen($str) > 0) {     reverse(substr($str, 1));     $result .= substr($str, 0, 1);     //此句必须放在上一语句之后   }   return $result; }

查看更多关于PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】的详细内容...

  阅读:66次