字符串/数组反转

2019-12-02  本文已影响0人  吕艳凯

题目:翻转字符串“algorithm”
在php中有反转的自带函数,分别为:
字符串反转:strrev()

<?php
$str="Hello world";
$result=strrev($str);
echo $result;
//输出的结果是:dlrow olleH;
?>

数组反转:array_reverse()
注意:array_reverse() 函数将原数组中的元素顺序翻转,创建新的数组并返回。如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

如果不使用自带函数,反转实现过程:
第一种解法:采用循环数组再拼接字符串:
第二种解法:反转数组,用两个指针,一个指向字符串的第一个字符 a,一个指向它的最后一个字符 m,然后互相交换。交换之后,两个指针向中央一步步地靠拢并相互交换字符,直到两个指针相遇。这是一种比较快速和直观的方法。
注意:由于无法直接修改字符串里的字符,所以必须先把字符串变换为数组,然后再运用这个算法。

反转数组.gif

代码实现:

class Code{
    
    //第一种直接拼接字符串
    function reverse($s){
        $arrS = str_split($s);
        $k = count($arrS);
        //预定义字符空串
        $str = '';
        foreach ($arrS as $key => $value) {
            $k--;
            $str .= $arrS[$k];
        }
        return $str;
    }
    
    //第二种交换字符反转数组
    function arrayReverse($arr){
        //定义前下标
        $s = 0;
        //定义后下标
        $k = count($arr)-1;
        foreach ($arr as $key => $value) {
            var_dump($s.':'.$k);
            //当后下标大于前下标的时候反转数组内容
            if($k > $s){
                $str = $arr[$s];
                $arr[$s] = $arr[$k];
                $arr[$k] = $str;
            }else{
                //为减少循环次数,在没有不需要反转提前跳出循环
                break;
            }
            //反转后移动前后下标
            $s++;
            $k--;
        }
        return $arr;
    }

}
$obj = new Code();
$res = $obj->reverse('algorithm');
var_dump($res);
$arr = str_split('algorithm');
$arrRe = $obj->arrayReverse($arr);
var_dump($arrRe);

输出结果:


结果
上一篇 下一篇

猜你喜欢

热点阅读