Maison >développement back-end >tutoriel php >Méthode d'implémentation de l'ordre inverse des chaînes PHP

Méthode d'implémentation de l'ordre inverse des chaînes PHP

墨辰丷
墨辰丷original
2018-05-26 15:31:403086parcourir

Cet article présente principalement la méthode d'implémentation de l'ordre inverse des chaînes en PHP.Il résume et analyse la fonction strrev, la méthode de bissection, la méthode de boucle, la méthode de récursion et d'autres techniques d'implémentation d'opérations d'ordre inverse de chaîne couramment utilisées sous forme d'exemples. dans le besoin peuvent s'y référer. Les détails ci-dessous

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
*/

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é.

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;
}

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. 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;
}

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

méthode php pour obtenir un nombre spécifié de chaînes aléatoires

php implémente l'interception personnalisée de la stringversion -utf8 chinoise

php searchstring Explication détaillée d'intercepter la première position non-0 dans

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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