344 反转字符串

class Solution {public:void reverseString(vector<char>& s) {int n = s.size();int l = 0;int r = n - 1;while(l < r) {char tmp = s[r]; s[r] = s[l];s[l] = tmp;l++;r--;}}
};

541 反转字符串2

class Solution {public:string reverseStr(string s, int k) {int n = s.size();int remain = n % (2*k);int gen = n/(2*k);for(int i = 0; i < gen; i++) {int l = i * 2 * k;      int r = i * 2 * k + k - 1;reverse(l,r,s);}if (remain < k) {reverse(n - remain,n - 1,s);} else if (remain < 2 * k) {reverse(n - remain,n - remain + k - 1,s);}return s;}void reverse(int l, int r, string& a) {while (l < r) {swap(a[r--],a[l++]);}}
};

剑指 05.替换空格

题目很简单 但是所求出的并不是最优解 我原本的解法

class Solution {public:string replaceSpace(string s) {string ans = "";for (char c:s) {if (c == ' ') {ans += "%20";}else {ans.push_back(c);}}return ans;}
};

这样做的时间复杂度为o(n) 空间负责度为O(n)
然而,通过双指针从后向前填充元素即可以更加节省空间
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。

  • 其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作
class Solution {public:string replaceSpace(string s) {int count = 0;for(char c:s) {if (c == ' ') {count++;}}int osize = s.size();s.resize(osize + 2*count);int nsize = s.size();for(int i = osize - 1, j = nsize - 1;i >= 0 && j >=0 ;i--,j--) {if (s[i] != ' ') {s[j] = s[i];}else {s[j] = '0';s[j - 1] = '2';s[j - 2] = '%';j-= 2;}}return s;}
};

该做法的空间复杂度为O(1)

剑指58-II.左旋转字符串

O(1)空间解法 时间复杂度为O(n)

class Solution {public:string reverseLeftWords(string s, int n) {int sz = s.size();reverse(s, 0, sz - 1);reverse(s, 0, sz-1-n);reverse(s, sz-n, sz-1);return s;}void reverse(string& s,int i, int j) {while(i < j) {swap(s[i++],s[j--]);}}
};

备战sp23春招 day8 | 344.反转字符串 541. 反转字符串II 剑指 05.替换空格 151.翻转字符串里的单词 剑指58-II.左旋转字符串相关推荐

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

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

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

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

  3. Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串

    这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...

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

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

  5. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  6. 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词

    剑指 Offer 58 - II. 左旋转字符串 把前k个字符移动到结尾 翻转前k个字符,翻转剩余字符 翻转整个字符串 class Solution { public:void reverse(str ...

  7. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串

    反转单词顺序以及左旋转字符串:输入一个英文句子,翻转句子中的单词顺序,单词内部的字母顺序是不变的 – I am a student. -> student. am I 第一步,翻转句子中的所有字 ...

  8. 微软算法100题26 左旋转字符串

    26.左旋转字符串 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef 左旋转2 位得到字符串cdefab.请实现字符串左旋转的函数. 要求时间对长度 ...

  9. 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列

    一.和为S的连续整数序列: 1.题目: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100 ...

最新文章

  1. 读懂深度迁移学习,看这文就够了 | 赠书
  2. 南方医科大学珠江医院检验医学部生物信息分析师招聘启示
  3. mysql 连接超时 wait_timeout interactive_timeout 简介
  4. Ubuntu下安装Python3.6并在终端输入Python就能显示Python3.6
  5. 台式电脑键盘f1是计算机怎么取消,开机F1怎么取消,教您开机F1怎么取消
  6. centos 6.5 32bit qemu 环境搭建
  7. `>>`(有符号右移) 和 `>>>`(无符号右移)的区别
  8. Vue源码分析系列四:Virtual DOM
  9. STM32F0xx_ADC采集电压配置详细过程
  10. sqlite+php+函数大全,Sqlite 常用函数 推荐
  11. 今日头条、快手们疯狂招人是人工智能的失败?
  12. 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理
  13. Java 输入输出流 转载
  14. 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
  15. hdu 5178 pairs (线性探查问题)
  16. Kubernetes 学习笔记---RESTClient 详解
  17. matlab——取整函数
  18. 彻底卸载vscode Linux,Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
  19. PQ8.05硬盘分区图文教程
  20. android华为怎么截屏快捷键,华为P9/P9Plus怎么截图 快捷键截图方法介绍

热门文章

  1. 怎样判断安装的mysql是社区版还是企业版
  2. Latex加批注 更改
  3. 苹果:用Impactor安装软件时出现Line:182错误
  4. uniapp实现调起地图导航
  5. python(十二)Uiautomator2搭建UI自动化框架实战
  6. Laravel 存在SQL注入漏洞
  7. sql语句中的子查询
  8. 本土英雄的退场和归来:Micromax教给了在印中国手机厂商哪些事?
  9. 零基础学习微信小程序(7):组件
  10. 备战金九银十,腾讯 T4 梳理 2022 年最全 999 道 Java 岗必备面试题答案