我是靠谱客的博主 干净翅膀,最近开发中收集的这篇文章主要介绍14天刷爆LeetCode算法学习计划——Day04 双指针(1)一、前言二、知识点三、LeetCode344. 反转字符串四、结语,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Day04 双指针

  • 一、前言
  • 二、知识点
  • 三、LeetCode344. 反转字符串
    • 1.题目
    • 2.解题思路
    • 3.注意事项
    • 4.代码实现
    • 5.复杂度分析
  • 四、结语

一、前言

盲目刷题只会让自己心态爆炸,所以本期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)
    只使用了常数空间来存放若干变量

四、结语

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

最后

以上就是干净翅膀为你收集整理的14天刷爆LeetCode算法学习计划——Day04 双指针(1)一、前言二、知识点三、LeetCode344. 反转字符串四、结语的全部内容,希望文章能够帮你解决14天刷爆LeetCode算法学习计划——Day04 双指针(1)一、前言二、知识点三、LeetCode344. 反转字符串四、结语所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部