美文网首页
字符串/数组反转

字符串/数组反转

作者: 吕艳凯 | 来源:发表于2019-12-02 15:36 被阅读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);

输出结果:


结果

相关文章

  • JS_字符串反转

    字符串反转先将字符串转成数组,然后再将数组反转,最后将数组转成字符串输出

  • C 字符串反转

    指针反转 数组字符串反转

  • 字符串练习

    练习一,去除字符串两端空格 练习二:将字符串反转思路:1,将字符串变成数组2,对数组反转3,将数组变成字符串 1,...

  • Face JS(一)(字符串反转、防抖、数组去重、实现new)

    1.字符串反转 *split(): 把字符串根据分隔符转化成数组*reverse(): 反转数组*join(): ...

  • 字符串/数组反转

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

  • js中的几点常用知识

    1.js中的字符串反转输出 js中的字符串反转输出的N种方法: 2.js中数组转字符串和字符串转数组 javasc...

  • js反转字符串

    先将字符串转为数组,再利用reverse方法反转数组。最后通过join方法将数组重新转回字符串

  • iOS 算法面试题(二)

    字符串反转 给定字符串 "hello,world",实现将其反转。输出结果:dlrow,olleh 序数组合并 将...

  • 字符串

    数组与字符串转换Swift 字符串转数组: Swift 数组转字符串: 1.反转字符串 2.判断字符串是否为空 3...

  • 【前端】split reverse join 使用

    split 将字符串切割转成数组; reverse 将数组顺序反转; join 将数组转成字符串; 例如:将 “h...

网友评论

      本文标题:字符串/数组反转

      本文链接:https://www.haomeiwen.com/subject/xqhfgctx.html