14天刷爆LeetCode算法学习计划——Day04 双指针(1)

一、前言

盲目刷题只会让自己心态爆炸,所以本期14天算法学习计划,也是LeetCode上的[算法]学习计划,在本专栏的每一篇文章都会整理每一天的题目并给出详细题解,以及知识点的整理

二、知识点

戳下方链接查看⬇⬇⬇

14天刷爆LeetCode算法学习计划——Day02双指针(1)

三、LeetCode344. 反转字符串

1.题目

LeetCode344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 1:
输入:s = [“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]

示例 2:
输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]

2.解题思路

明显的双指针问题,一个指向头、一个指向尾,交换两个指针指向的元素,在反转一次以后,left指针向后移动,right指针向前移动,进行第二次反转直至要重合为止
在这里插入图片描述
如图所示,依次对调位置

3.注意事项

当我们设定临时变量temp的时候,其 变量类型为char型,因为本题要求反转字符串

4.代码实现

class Solution {
    public void reverseString(char[] s) {
        int left = 0;
        int right = s.length - 1;
        while(left < right){
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
}

5.复杂度分析

  • 时间复杂度:O(N)
    其中 N为字符数组的长度。一共执行了 N/2 次的交换
  • 空间复杂度:O(1)
    只使用了常数空间来存放若干变量

四、结语

本题是力扣的简单题,是不是又找回自信了?其实掌握了方法的话,这些题目都不会困难,接下来的这道题是本题升级版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值