PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
本文实例总结了PHP字符串逆序排列实现方法。分享给大家供大家参考,具体如下:
关于字符串的逆序排列,最简单的使用PHP函数strrev()的测试代码如下:
header('Content-type:text/html;charset=utf-8');
$str=implode('',range(9,0));
print'<p><strong>Beforereversed:</strong>'.$str.'</p>';
print'<p><strong>Afterreversed:</strong>'.strrev($str).'</p>';
/*
输出如下:
Beforereversed:9876543210
Afterreversed:0123456789
*/
如果不用内置的PHP函数strrev(),又该如何实现呢?这里另外给出了3种方法(二分法、循环法、递归法),但没有进行性能测试。
(PS:这里为了方便大家阅读代码,使用了本站在线php代码格式化工具http://tools.jb51.net/code/jb51_php_format进行了格式化处理。)
1、二分法
/**
*二分法实现字符串逆序排列
*@paramstring$str源字符串
*@returnstring返回逆序后的字符串
*/
functionreverse($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、循环法
/**
*循环实现对字符串的逆序排列(效率比二分法低)
*@paramstring$str源字符串
*@returnstring返回逆序后的字符串
*/
functionreverse($str=''){
$result='';
for($i=1;$i<=strlen($str);$i++){
$result.=substr($str,-$i,1);
}
return$result;
}
3、递归法
/**
*递归实现对字符串的逆序排列(效率低)
*@paramstring$str源字符串
*@returnstring返回逆序后的字符串
*/
functionreverse($str=''){
static$result='';
/*用堆栈来理解递归调用*/
if(strlen($str)>0){
reverse(substr($str,1));
$result.=substr($str,0,1);
//此句必须放在上一语句之后
}
return$result;
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。