Tri des chaînes PHP dans l'ordre inverse [fonction strrev, dichotomie, méthode de boucle, méthode récursive]

高洛峰
Libérer: 2023-03-04 19:28:02
original
1239 Les gens l'ont consulté

L'exemple de cet article résume la méthode d'implémentation de la disposition dans l'ordre inverse des chaînes PHP. Partagez-le avec tout le monde pour référence, les détails sont les suivants :

Concernant l'ordre inverse des chaînes, le code de test le plus simple utilisant la fonction PHP strrev() est le suivant :

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
*/
Copier après la connexion

Comment implémenter cela sans utiliser la fonction PHP intégrée strrev() ? Trois méthodes supplémentaires (méthode de bissection, méthode de boucle, méthode récursive) sont données ici, mais aucun test de performances n'est effectué.

(PS : Afin de faciliter la lecture du code par tout le monde, l'outil de formatage du code php en ligne http://tools.jb51.net/code/jb51_php_format est utilisé pour le formatage.)

1. Dichotomie

/**
* 二分法实现字符串逆序排列
* @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;
}
Copier après la connexion

2. Méthode circulaire

/**
* 循环实现对字符串的逆序排列(效率比二分法低)
* @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;
}
Copier après la connexion


3. , Méthode récursive

/**
* 递归实现对字符串的逆序排列(效率低)
* @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;
}
Copier après la connexion

J'espère que cet article sera utile à tout le monde dans la programmation PHP.

Pour plus d'articles sur l'arrangement des chaînes PHP dans l'ordre inverse [fonction strrev, dichotomie, méthode de boucle, méthode récursive], veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!