翻转字符串里的单词(双指针,字符串分割)

  • 1. 题目描述
  • 2. 题目分析
  • 3. C语言实现
  • 4. Python实现

1. 题目描述

难度:中等

2. 题目分析

这道题我们需要注意的点有以下几个:

  • 每个单词之间都要有一个并且仅有一个空格
  • 翻转之后的字符串首尾两端要去电空格
  • 使用O(1)的空间

只使用O(1)的额外空间的话,只能在原数组上进行转换:

  • 字符串翻转法(C)
    利用双指针对对字符串进行整体翻转,如果对输入“the sky is blue” 翻转之后为“eulb si yks eht”。之后在对每个单词进行反转,结果为“blue is sky the”,就完成了。在翻转的时候对多余的空格进行去除即可。
  • 字符串分割法(Python)
    字符串的题目利用python是很方便的,可以先对字符串进行分割,然后在反转合成新的字符串即可。

3. C语言实现

代码如下:

// 去除指定位置的yuansu
char * removeSpaces(char *s, int index){int len = strlen(s);for(int i = index; i < len-1; i++){s[i] = s[i+1];}s[len-1] = '\0';return s;
}
char * reverseWords(char * s){int len = strlen(s);if(len == 0) return s;if(len == 1) return s[0]==' '? "":s;int left=0, right=len-1, index, count = 0;char temp;// 去除字符串两边的空格while(s[right] == ' '){right--;if(right == -1) return "";}while(s[left] == ' '){left++;}for(int i = 0; i <= right-left; i++){s[i] = s[i+left];}s[right-left+1] = '\0';len = strlen(s);left = 0;right = len -1;// 翻转整个字符串while(left < right){temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}// 去除中间多余的空格for(int i = 0; i < len; i++){if(s[i] == ' '){if(count > 0){s = removeSpaces(s, i);len = strlen(s);i--;}else count++;}else count = 0;}// 转换每个单词left = 0;right = 0;for(int i = 0; i < len; i++){if(s[i] == ' ' || i == len-1){right = i==len-1?i:i-1;while(left < right){temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}left = i+1;}}return s;}

运行结果为:

4. Python实现

代码如下:

class Solution:def reverseWords(self, s: str) -> str:# 分割字符串tem = s.split(' ')res = ''# 去除tem 中的空元素while '' in tem :tem .remove('')# 合成新的字符串for i in range(len(tem )):res  = res  + tem [len(tem )-1-i] + ' 'return res [:-1]

运行结果为:

LeetCode--151. 翻转字符串里的单词(字符串翻转,字符串分割)相关推荐

  1. Day8——反转字符串、反转字符串||、替换空格、反转字符串里的单词、左旋字符串

    今天是算法训练的第八天. 目录 前言 一.反转字符串 解题思路: 二.反转字符串|| 题目描述: 解题思路: 三.替换空格 解题思路: 四.反转字符串中的单词 解题思路: 五.左旋转字符串 解题思路: ...

  2. python【力扣LeetCode算法题库】151- 翻转字符串里的单词

    翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky the&quo ...

  3. 反转字符串里的单词 + 图示

    翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词. 说明: 无空格字符构成一个 单词 . 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括. 如果两个单词间有多余的空 ...

  4. [leetcode]151.翻转字符串里的单词

    给你一个字符串 s ,逐个翻转字符串中的所有 单词 . 单词 是由非空格字符组成的字符串.s 中使用至少一个空格将字符串中的 单词 分隔开. 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串. ...

  5. 数组翻转_LeetCode刷题实战151:翻转字符串里的单词

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家聊 ...

  6. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列

    72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...

  7. 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符

    一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...

  8. 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

    一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...

  9. Lc151翻转字符串里的单词

    翻转字符串里的单词 差一点就做出来,一开始用空格拆分单词,但是这个样例the sky is blue 没有通过,单词之间有多个空格的情况,然后看了评论区--学了一个正则表达式 /\s+/这是正则表达式 ...

最新文章

  1. 2014年第五届蓝桥杯决赛Java本科B组试题解析
  2. 小红书做直播的背后,隐藏了什么秘密?
  3. 归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块
  4. 考前自学系列·计算机组成原理·IEEE 754 单精度浮点数和真值之间的转化
  5. MyEclipse开发教程:使用REST Web Services管理JPA实体(四)
  6. 找出得分最高的无重复子段
  7. android录音播放列表,android数据库里的视频,图片,音频表
  8. 最优化学习笔记(五)——牛顿法(多维数据)
  9. python高级-------python2.7教程学习【廖雪峰版】(四)
  10. python的while嵌套循环_Python中嵌套的WHILE循环
  11. 微信小程序点餐系统需求分析与建模
  12. Xamarin教程索引页
  13. 四川山海蓝图抖音上热门的技巧
  14. Java每日一题——>739. 每日温度(蛮力法,栈方法)
  15. C++求一元二次方程根
  16. python毕业设计作品基于django框架 景区购票系统毕设成品(4)开题报告
  17. DOS的建文件夹,移动图片,多级文件夹建立
  18. HTML识别文本空格回车换行展示
  19. 2021-05-12 MongoDB面试题 简单的描述下MongoDB选举流程
  20. 03_JavaScript常见运算符

热门文章

  1. linux zip包解压乱码
  2. php千封邮件怎么快速发送,如何在PHP中无限制地发送数千封电子邮件?
  3. java文件不能转class_安了jdk 却不能将.java文件转换成.class 文件,一运行就说‘javac’不是内部或外部指令,却能运行.class文...
  4. Spring-自定义类实现AOP(八)
  5. Win32中常用消息
  6. python--线性回归
  7. xcodebuild构建时报错unknown error -1=ffffffffffffffff Command /bin/sh failed with exit code 1
  8. GO学习笔记 - Go 只有一种循环结构—— for 循环。
  9. java必会的英语单词
  10. 简单的ios网络数据交互