当前位置: 首页 > news >正文

(C++字符串02) 反转字符串中的单词

151、反转字符串中的单词

先将字符串的里的多余空格去掉,时间复杂度:O(n),再将字符串整体反转,时间复杂度:O(n),最后反转每一个单词,时间复杂度:O(n);

class Solution {
public:string reverseWords(string s) {removeExtraSpaces(s);swap(s, 0, s.size() - 1);int left = 0;for(int right = 0; right <= s.size(); right++) {if(s[right] == ' ' || right == s.size()) {swap(s, left, right-1);left = right + 1;}}return s;}void removeExtraSpaces(string& s) {int slow = 0;for(int i = 0; i < s.size(); i++) {if(s[i] != ' ') {if(slow != 0) {s[slow++] = ' ';}while(i < s.size() && s[i] != ' ') {s[slow++] = s[i++];}}}s.resize(slow);}void swap(string& s, int left, int right) {for(; left < right; left++, right--) {char tem = s[left];s[left] = s[right];s[right] = tem;}}
};

时间复杂度:O(n)

空间复杂度:O(1)

55. 右旋字符串(卡码网)

408考过这个,局部反转外加整体反转可以实现字符串的旋转操作

#include<iostream>
using namespace std;
void reverse(string& s, int left, int right);
int main() {int n;string s;cin >> n;cin >> s;reverse(s, 0, s.size() - 1);reverse(s, 0, n - 1);reverse(s, n, s.size() - 1);cout << s << endl;
}
void reverse(string& s, int left, int right) {for(; left < right; left++, right--) {char tem = s[left];s[left] = s[right];s[right] = tem;}
}

时间复杂度:O(n)

空间复杂度:O(1)

http://www.lryc.cn/news/397811.html

相关文章:

  • 一致性Hash问题及解决方案
  • 【接口设计】如何设计统一 RESTful 风格的数据接口
  • 【备战秋招】——算法题目训练和总结day3
  • Git 操作总结
  • 若依 ruoyi-vue SpringBoot highlight-textarea 输入框敏感词关键词高亮标红(二)
  • 33 IRF配置思路
  • Dify中的RAG和知识库
  • vue3 + i18n 中英文切换
  • one-hot-zhu案例
  • 数据库课设---酒店管理系统(MySQL、VBNet)
  • NLP入门——前馈词袋分类模型的搭建、训练与预测
  • GD32F303RET6读取SGM58031电压值
  • Pandas实战指南:any()函数深度解析与高效应用
  • ClickHouse中PRIMARY KEY和ORDER BY关键字的关系
  • android 图片轮播
  • 进度条提示-在python程序中使用避免我误以为挂掉了
  • 【案例】python集成OCR识别工具调研
  • 第一关:Linux基础知识
  • qt 自定义信号和槽举例
  • 编程语言与数据结构的关系:深度解析与探索
  • 了解AsyncRotationController
  • 有必要找第三方软件测评公司吗?如何选择靠谱软件测评机构?
  • 物联网系统中市电电量计量方案(一)
  • 2024年热门无线领夹麦克风哪款好,麦克风品牌排行榜前十名推荐
  • IEEE顶刊“放水”?稳居1区Top,发文扩张IF稳长,CCF推荐,审稿友好!
  • 发布:PhonePrompter_PC(手机录视频提词器_电脑版)
  • shein测试开发会问些啥?
  • mysql索引优化
  • Linux文件编程(打开/创建写入读取移动光标)
  • 集成测试技术栈