151. 颠倒字符串中的单词
✔做题思路 or 感想 :
-
乍一看很猛,其实思路就仨
- 把整个字符串反转
- 删除多余空格
- 然后再把每一个单词反转
-
反转,删除空格用的都是双指针法,太香了
-
数组中的删除操作总体思想虽然是把符合条件的数往前面推,但这个"推"并不是交换值!而是直接往前面把不符合条件的值直接替换了!!!
class Solution { public: string reverseWords(string s) { reverse(s.begin(), s.end()); int fast = 0, slow = 0; while (s[fast] == ' ' && fast < s.size()) { //这里是先要删除前面的空格 fast++; } for (; fast < s.size(); fast++) { //去除中间空格 if (fast > 1 && s[fast - 1] == s[fast] && s[fast] == ' ')continue; else { //注意这里的删除操作,不是用swap替换!而是直接就把后面符合条件的直接替换前面不符合条件的数!!!! s[slow] = s[fast]; slow++; } } //下面是为了处理后面末尾的空格 if (slow > 0 && s[slow - 1] == ' ')s.resize(slow - 1); else s.resize(slow); //下面是对每一个单词的反转 fast = 0, slow = 0; for (; fast < s.size(); fast++) { if (fast == s.size() - 1) { reverse(s.begin() + slow, s.end()); } else if (s[fast + 1] == ' ') { reverse(s.begin() + slow, s.begin() + fast + 1); slow = fast + 2; //slow找下一个单词的起点 fast++; } } return s; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端