题目描述:

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

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

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

思路分析:

反转链表或是字符串一般都用双指针来实现。

对于长度为 N 的待被反转的字符数组,我们可以观察反转前后下标的变化,假设反转前字符数组为 s[0] s[1] s[2] ... s[N - 1],那么反转后字符数组为 s[N - 1] s[N - 2] ... s[0]。比较反转前后下标变化很容易得出 s[i] 的字符与 s[N - 1 - i] 的字符发生了交换的规律,因此我们可以得出如下双指针的解法:

将 left 指向字符数组首元素,right 指向字符数组尾元素。
当 left < right:
交换 s[left] 和 s[right];
left 指针右移一位,即 left = left + 1;
right 指针左移一位,即 right = right - 1。
当 left >= right,反转结束,返回字符数组即可。

java实现:

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

leetcode344题:反转字符串相关推荐

  1. 每日一题——反转字符串中的单词

    每日一题 反转字符串中的单词 题目链接 思路(进阶) 我们首先不考虑太多限制因素,先看如何实现字符串中单词的反转 举个例子:我们要反转字符串"the sky is blue"中的单 ...

  2. leetcode算法题--反转字符串

    原文链接:https://leetcode-cn.com/problems/reverse-string/ 双指针法 void reverseString(vector<char>& ...

  3. 牛客题霸 [反转字符串] C++题解/答案

    牛客题霸 [反转字符串] C++题解/答案 题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1000) 题解: 有reverse现成的翻转函数,直接套进去就可 ...

  4. LeetCode344反转字符串

    LeetCode344反转字符串 未经博主同意,禁止瞎JB转载. https://leetcode-cn.com/problems/reverse-string/description/ 我的解答: ...

  5. leetcode--344. 反转字符串

    leetcode–344. 反转字符串 题目链接: leetcode344 题目描述 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出.不要给另外的数组分配 ...

  6. 【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母

    写在前面,反转数组的思路很简单,就是借助双指针不断将首尾相应位置的字符交换.Java模板如下: public void reverseArray(char[] arr) {int i = 0, j = ...

  7. 详解反转字符串算法题

    反转字符串,是经常出现的一种算法题,使用C/C++语言时,通常要求在原地进行反转. 最直接的反转整个字符串,使用的是一前一后双指针的方法 进阶的翻转,同要要涉及到两个指针,只是两个指针就行局部反转 进 ...

  8. 简单记录牛客top101算法题(初级题C语言实现)判断回文字符串 反转字符串 合并两个有序的数组

    1. 判断是否为回文字符串   给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文.如果是回文请返回true,否则返回false.   字符串回文指该字符串正序与其逆序逐字符一致. // ...

  9. 5种方法实现“反转字符串”

    今天遇到一道题目是实现一个反转字符串的函数,具体如下: 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输 ...

  10. 牛客题霸 [字符串变形]C++题解/答案

    牛客题霸 [字符串变形]C++题解/答案 题目: 对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形.首先这个字符串中包含着一些空格,就像"Hello World& ...

最新文章

  1. 【car】为什么后轮驱动的电动小摩托后轮打滑时制动前轮能起到较好的防打滑效果(ESC、ESP、VSA车身稳定系统)
  2. 【电子信息复试】考研复试常考问题——软件工程
  3. Nginx模块开发中使用PCRE正则表达式匹配
  4. Dynamic Performance Tables not accessible,Automatic Statistics...
  5. 前端radio单选框默认选中_开发记录篇前端内容1
  6. Oracle碎碎念~2
  7. BlueCatTools-域名批量查询软件介绍
  8. C++ C++基础语法入门总结(一)命名空间-输入输出-缺省参数-函数重载
  9. 基于visual Studio2013解决C语言竞赛题之1067间隔排序
  10. 为什么旧硬件的驱动越来越难找了?
  11. ACL在QinQ port 中的应用
  12. CAD制图教程之CAD中怎么画剪刀楼梯?
  13. Java项目:springboot宠物医院管理系统
  14. java 中英文长度_Java--计算中英文长度的若干种方法
  15. 华硕fl5600l笔记本拆机,在光驱位加装固态硬盘
  16. win10怎么装c语言,WIN10上安装编写C++ C语言的软件教程
  17. 《吊打分析师》实战—深圳链家租房数据分析 | 附源码
  18. C#实现QQ窗体的步骤和总结
  19. 项目进度管理__计划评审技术之标准正态分布表
  20. java8 GC日志分析

热门文章

  1. 制造爆款:建立“增长团队”
  2. Html中Select的增删改查排序,和jQuery中的常用功能
  3. iOS中事件的传递和响应者链条
  4. 2013 年亚洲赛杭州赛区卡题总结
  5. [原]sencha touch之表单(login demo)
  6. winCE DEBUGZONE
  7. Oracle 数据块 Block 说明
  8. 深度学习——第二次浪潮、寒冬与解冻
  9. 贪心算法——洛谷(P3817)小A的糖果
  10. mysql水平拆分 hash_常用的数据库表水平拆分方案