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

廉江网站制作郑州免费做网站

廉江网站制作,郑州免费做网站,简历模板做的最好的是哪个网站,义乌最好的电商培训学校LeetCode 151. 反转字符串中的单词 解析 这个问题要求将给定字符串中的单词顺序反转,同时移除多余空格,使得每个单词之间只有一个空格,且字符串首尾无空格。 方法思路 最优解法是原地反转法:通过三次反转操作实现单词顺序的反转…

LeetCode 151. 反转字符串中的单词 解析

这个问题要求将给定字符串中的单词顺序反转,同时移除多余空格,使得每个单词之间只有一个空格,且字符串首尾无空格。

方法思路

最优解法是原地反转法:通过三次反转操作实现单词顺序的反转,同时处理多余空格。具体步骤如下:

  1. 移除多余空格
    将字符串中的多余空格去除,只保留单词间的单个空格,并调整字符串长度。

  2. 整体反转
    将处理后的字符串整体反转。

  3. 单词反转
    遍历字符串,对每个单词进行局部反转,恢复单词的原始顺序。

C++ 代码实现

#include <string>
#include <algorithm>class Solution {
public:string reverseWords(string s) {// 1. 移除多余空格int i = 0, j = 0;  // i 为写入指针,j 为读取指针while (j < s.length()) {// 跳过前导空格while (j < s.length() && s[j] == ' ') j++;if (j >= s.length()) break;  // 处理全空格的情况// 添加单词和中间空格if (i != 0) s[i++] = ' ';  // 单词间添加一个空格while (j < s.length() && s[j] != ' ') {s[i++] = s[j++];}}s.resize(i);  // 调整字符串长度// 2. 整体反转reverse(s.begin(), s.end());// 3. 逐个单词反转i = 0;for (int j = 0; j <= s.length(); j++) {if (j == s.length() || s[j] == ' ') {  // 遇到空格或字符串末尾reverse(s.begin() + i, s.begin() + j);i = j + 1;  // 更新下一个单词的起始位置}}return s;}
};

代码解释

  1. 移除多余空格

    • 使用双指针 ij,其中 j 用于遍历原字符串,i 用于写入处理后的字符。
    • 跳过前导空格,遇到单词时将其复制到 i 位置,并在单词间添加单个空格。
    • 最终使用 resize(i) 调整字符串长度,去除尾部冗余字符。
  2. 整体反转
    使用 reverse(s.begin(), s.end()) 将整个字符串反转,此时单词顺序已反转,但每个单词内部字符顺序也被反转。

  3. 单词反转

    • 遍历字符串,每当遇到空格或字符串末尾时,将当前单词(从 ij-1)进行局部反转。
    • 更新 i 为下一个单词的起始位置(j+1)。

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串的长度。每个字符最多被处理三次(移除空格、整体反转、单词反转)。
  • 空间复杂度:O(1),仅需常数级的额外空间。

示例

输入:s = " hello world! "
输出:"world! hello"
解释

  1. 移除多余空格"hello world!"
  2. 整体反转"!dlrow olleh"
  3. 单词反转"world! hello"

关键点

  1. 原地修改
    通过双指针法在原字符串上直接操作,避免额外空间开销。

  2. 三次反转策略
    整体反转+单词反转的组合巧妙地实现了单词顺序的反转,同时保持单词内容正确。

  3. 边界处理

    • 处理字符串首尾的多余空格。
    • 处理连续多个空格的情况。
    • 处理空字符串或全空格字符串的情况。

这种方法高效且符合题目要求,是解决此类问题的经典思路。

方法二:

class Solution {
public:string reverseWords(string s) {stringstream ss(s);vector<string> words;string word;while (ss >> word){words.emplace_back(word);}string res = words[words.size() - 1];for (int i = words.size() - 2; i >= 0; --i){res += " ";res += words[i];}return res;}
};
http://www.dtcms.com/wzjs/64357.html

相关文章:

  • 代理二级分销系统上海高玩seo
  • 昆山便宜做网站正规的计算机培训机构
  • 网站建设维护教程b站在线观看
  • 祥云平台技术支持双语网站seo引擎优化教程
  • 建站兔软件常见问题软文范例
  • 如何给网站做右侧导航seo运营学校
  • 石家庄正规制作网站公司谷歌浏览器网页
  • 网站伪静态设置seo网站关键词优化快速官网
  • dw做网站常用标签网络营销的基本职能
  • 网站建设费用低设计好seo关键词分类
  • 深圳狮子会网站十大搜索引擎神器
  • 重庆观音桥谷歌sem和seo区别
  • 怎样批量做全国网站模板网站建站哪家好
  • 网站怎么做认证今日头条热榜
  • 哪里能给人做网站关键词优化搜索引擎
  • 河南省住建委官方网站制作公司网页多少钱
  • 合肥做网站开发多少钱微信营销推广公司
  • 动态网站开发技术指标新冠病毒最新消息
  • 佛山营销网站建设推广最近的疫情情况最新消息
  • 通达oa 做网站网站可以自己做吗
  • asp汽车驾驶培训学校网站源码百度公司的业务范围
  • 商鼎营销型网站建设网站推广优化是什么意思
  • 如何对网站做压力测试百度400电话
  • 建网站用自己的主机做服务器关键词优化技巧
  • 徐水住房建设局网站北京网站设计公司
  • 贵州网站建设公司防城港网站seo
  • 外贸网站怎么做会吸引眼球网络推广是什么
  • 怎么查看网站备案百度引流推广怎么收费
  • 广安做网站公司代运营电商公司排行榜
  • 前方网络网站建设合同友情连接