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

举报
伯约同学 发表于 2022/03/26 23:12:44 2022/03/26
【摘要】 Leetcode344反转字符串(双指针解法)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。答题:/** \* @param {character[]} s \* @return {void} Do not return anything, modify s ...

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个然后再让慢指针开始走。

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。