ホームページ  >  記事  >  バックエンド開発  >  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 つの追加の方法 (二分法、ループ法、再帰的方法) が示されていますが、パフォーマンス テストは実行されません。

(追記: 誰でもコードを読みやすくするために、この Web サイトのオンライン 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 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。