字符串倒序排列

<?php
$str = 'whoareyou';

//一,使用内置函数strrev().

//二,二分法,将字符串按照首尾呼应的格式调换顺序

//012345678  9-0-1
//012345678  9-1-1
//012345678  9-2-1
$len = strlen($str);
//不能使用count或sizeof
$mid = floor($len/2);  //二分法
for ($i=0; $i<$mid; $i++) {  //索引从0开始,而$len从1开始计长度,所以
    $temp = $str[$i];
    $str[$i] = $str[$len - $i - 1];
    $str[$len - $i - 1] = $temp;
}
 //三,循环截取
$result = '';
for ($i=1; $i<=strlen($str); $i++) {
    $result .= substr($str, -$i, 1);
}
echo $result;

//四,递归
/**
 * 递归实现对字符串的逆序排列(效率低)
 * @param string $str 源字符串
 * @return string 返回逆序后的字符串
 */
function reverse($str='') {
    static $result = '';
    /* 用堆栈来理解递归调用 */
    if (strlen($str) > 0) {
        reverse(substr($str, 1)); //递归中每次执行到这儿时程序将再次调用reverse
        $result .= substr($str, 0, 1); //当strlen($str) > 0条件不满足时执行到result时开始归数据
        //此句必须放在上一语句之后
    }
    return $result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值