• LeetCode#344-Reverse String-反转字符串


    一、题目

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

    不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

    你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

    示例 1:

    输入:["h","e","l","l","o"]
    输出:["o","l","l","e","h"]
    

    示例 2:

    输入:["H","a","n","n","a","h"]
    输出:["h","a","n","n","a","H"]
    

    二、题解

    • 解法1:

    从倒数第二个数开始向前遍历,将当前的元素追加到最后一个数末尾,同时删除当前元素。

    function reverseString(&$s) {
        $end = count($s) - 1;
        for ($i = $end - 1; $i >= 0; $i--) {
            $s[] = $s[$i];
            unset($s[$i]);
        }
    }
    
    • 解法2:双指针法

    使用两个指针,一个左指针 left,右指针 right,开始工作时 left 指向首元素,right 指向尾元素。交换两个指针指向的元素,并向中间移动,直到两个指针相遇。
    时间复杂度:O(N),空间复杂度:O(1)。

    function reverseString(&$s) {
        $left = 0;
        $right = count($s) - 1;
        while ($left < $right) {
            $temp = $s[$left];
            $s[$left] = $s[$right];
            $s[$right] = $temp;
            $left++;
            $right--;
        }
    }
    
  • 相关阅读:
    离职or not 离职
    RelativeLayout总结
    MVC中小试了一下Jquery
    tricks about andor in python
    【回旋数字】c语言实现
    退役?
    HDU4546 比赛难度
    WEB页面导出为EXCEL文档的方法
    开始→运行→命令
    控制Repeater显示列数
  • 原文地址:https://www.cnblogs.com/sunshineliulu/p/12626709.html
Copyright © 2020-2023  润新知