反转字符串,是经常出现的一种算法题,使用C/C++语言时,通常要求在原地进行反转。

最直接的反转整个字符串,使用的是一前一后双指针的方法

进阶的翻转,同要要涉及到两个指针,只是两个指针就行局部反转

进阶题目:

给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"
要求:

该字符串只包含小写的英文字母。
给定字符串的长度和 k 在[1, 10000]范围内。

class Solution {
public:string reverseStr(string s, int k) {int n = s.size();int i=0;while(i<n){if(i+k>n) reverse(s.begin()+i,s.end());else reverse(s.begin()+i,s.begin()+i+k);i=i+2*k;}return s;}
};

两个指针移动的局部反转

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc"

class Solution {
public:string reverseWords(string s) {int i=0,j=0;while(i<s.size()){while(j<s.size()&&s[j]!=' ') j++;reverse(s.begin()+i,s.begin()+j);i=++j;}return s;}
};

最难的反转字符串

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: "the sky is blue"
输出: "blue is sky the"
示例 2:

输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:

输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

详解反转字符串算法题相关推荐

  1. 算法经典“钓鱼”问题详解 基于贪心算法 C语言描述

    算法经典"钓鱼"问题详解 基于贪心算法 初始条件 在一条水平路边,有 n 2 ≤ n ≤ 25个钓鱼池,从左到右编号为1.2.3.--.n.小明有H1 ≤ H ≤ 16个小时的空余 ...

  2. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) 阅读本文前,请确保你已经掌握了递归.栈和队列的基本知识,如想掌握搜索的代码实现,请确保你能够用代码实现栈和队列的基本操作. 深度优先遍 ...

  3. 【算法知识】详解希尔排序算法

    前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 当待插入元素是一个很小(当需求是从小到大排序时,从大到小排序时此处为很大)直接插入排序需要移动 ...

  4. 【算法知识】详解直接插入排序算法

    前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 在玩扑克牌的时候,我们抽到一张牌的时候,都是将它插入到当前手中牌的合适位置的. 如下图: (上图来自算法导论) 直接插入排序 ...

  5. python比较两个字符串相似度_详解Python 字符串相似性的几种度量方法

    字符串的相似性比较应用场合很多,像拼写纠错.文本去重.上下文相似性等. 评价字符串相似度最常见的办法就是:把一个字符串通过插入.删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种 ...

  6. 算法详解_常用算法详解——打印杨辉三角形

    杨辉三角,是二项式系数在三角形中的一种几何排列.在中国南宋数学家杨辉1261年所著的<详解九章算法>一书中出现.在欧洲,这个表叫做帕斯卡三角形.帕斯卡(1623----1662)是在165 ...

  7. 最形象的卷积神经网络详解:从算法思想到编程实现(转载)

    mark一下,感谢作者分享! 原标题:最形象的卷积神经网络详解:从算法思想到编程实现 1 新智元推荐 查看全文 http://www.taodudu.cc/news/show-4611564.html ...

  8. DDA画线算法+代码详解-直线扫描算法之一

    #DDA画线算法+代码详解-直线扫描算法之一 本文目录结构如下 1.直线扫描算法简介 2.DDA直线扫描算法 2.1 公式推理 1.求斜率K: 2.当|K| <= 1 时 3.当|K| > ...

  9. 小白给小白详解维特比算法(一)

    小白给小白详解维特比算法(一) 小白给小白详解维特比算法一 篱笆网络Lattice的最短路径问题 这个问题长什么样子 这个问题难在哪里 简化成这个模样你总能回答了吧 下一步我们该干什么 别倒立了我们再 ...

最新文章

  1. python 每日温度
  2. [LGP4707] 重返现世
  3. 用最简单的方式训练史上最强ResNet-50,性能超过魔改结构的ResNeSt
  4. mongodb连接失败_mongodb 数据库及数据分页
  5. TreeView和Menu
  6. struts2:表单标签续(datetimepicker标签)
  7. mvc ajax 页面不刷新页面,如何在不刷新页面MVC C#的情况下显示不同的值
  8. 金电容(法拉电容)与可充放电池的相关知识
  9. 菜鸡程序员的一天都在折腾些什么?
  10. 回顾2017、展望2018
  11. 2016计算机技术操作考试题,2016年计算机二级《VB》上机操作题(1)
  12. 传奇服务器人物技能怎么修改,传奇服务端上线0级技能,直接设置3级技能的设置方法...
  13. 北航外国语学院计算机项目,北京航空航天大学外国语学院游学项目.pdf
  14. C# 串口+示波+数据存储+截图
  15. 【环信IM集成指南】iOS端常见问题整理(2)
  16. android 屏幕分辨率 屏幕密度,android分辨率,屏幕尺寸,屏幕密度关系
  17. 深度学习6---案例:人民币识别实现
  18. 默纳克服务器密码正确进不去,默纳克常见问题问答
  19. centos m4安装linux,Centos Docker环境下安装Dcm4che归档服务
  20. 班主任如何展开期中表彰班会

热门文章

  1. Intel CPU 型号规格大全
  2. IDEA设置System.out.println()和main方法快捷键
  3. excel字符合并技巧:几种连接字符串的方法助你高效办公
  4. @Configuration的使用方法
  5. linux文件管理器哪个好,4款简单实用的的服务器文件管理工具推荐
  6. 用户画像(一)利用mysql进行用户画像
  7. 2017-08-03 面试记录(铃声多多)
  8. Python时间戳运用
  9. 苹果屏蔽更新_iPhone 不想更新系统怎么办?一招屏蔽
  10. MySQL binlog详解