Leetcode344反转字符串(双指针解法)

简介: Leetcode344反转字符串(双指针解法)

Leetcode344反转字符串(双指针解法)

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

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

答题:

/**
 \* @param {character[]} s
 \* @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
  let left = 0;
  let right = s.length -1;
  let tem;
  while(left < right){
​    tem = s[left];
​    s[left] = s[right];
​    s[right] = tem;
​    left++
​    right--
  }
  return s
};

最近真的是学好多东西,leetcode题刷的有点懈怠,每天都是简单题我重拳出击。

今天就多写点字,顺便总结下双指针的解题技巧。

上面这个题是一个简单的左右指针,还有一个常见的快慢指针,比如leetcode19删除链表的倒数第N个节点。

对于左右指针,就是按照条件缩小所有边界。

尤其是二分查找的题目,通过一个中间数,判断是否满足条件,然后让左边界或者右边界缩小来都找寻结果。

对于快慢指针,就是一个快指针一个慢指针,两个指针走的速度不同,指向的意义也不同。比如说上一篇文章中我们写的移动零,快指针代表遍历的索引位置,慢指针表示可用于替换的索引位置。而针对删除链表这道题来说,我们让快指针往前先走N个然后再让慢指针开始走。

双指针问题可以说是最常见的遍历优化解决方案了,多做两道题,多几次重拳出击~~

相关文章
|
17天前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
30 1
|
1月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
23 9
|
1月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
16 0
|
1月前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
27 0
|
1月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
18 0
|
1月前
【LeetCode 19】541.反转字符串II
【LeetCode 19】541.反转字符串II
19 0
|
1月前
【LeetCode 18】6.2.反转字符串
【LeetCode 18】6.2.反转字符串
14 0
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
3月前
|
存储 算法
LeetCode第43题字符串相乘
LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
LeetCode第43题字符串相乘
下一篇
无影云桌面