首頁  >  文章  >  後端開發  >  PHP字串逆序排列【strrev函數,二分法,循環法,遞歸法】

PHP字串逆序排列【strrev函數,二分法,循環法,遞歸法】

高洛峰
高洛峰原創
2017-01-14 13:38:531220瀏覽

本文實例總結了PHP字串逆序排列實作方法。分享給大家供大家參考,具體如下:

關於字串的逆序排列,最簡單的使用PHP函數strrev()的測試程式碼如下:

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

如果不用內建的PHP函數strrev(),又該如何實現呢?這裡另外給了3種方法(二分法、循環法、遞歸法),但沒有進行效能測試。

(PS:這裡為了方便大家閱讀程式碼,使用了本站在線php程式碼格式化工具http://tools.jb51.net/code/jb51_php_format進行了格式化處理。)

1、二分法

/**
* 二分法实现字符串逆序排列
* @param string $str 源字符串
* @return string 返回逆序后的字符串
*/
function reverse($str=&#39;&#39;) {
  $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=&#39;&#39;) {
  $result = &#39;&#39;;
  for ($i=1; $i<=strlen($str); $i++) {
    $result .= substr($str, -$i, 1);
  }
  return $result;
}

 

3、遞歸法

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

希望本文所述對大家PHP程序設計有所幫助。

更多PHP字串逆序排列【strrev函數,二分法,循環法,遞歸法】相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn