概述
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. 反转字符串四、结语所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复