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

做视频网站 带宽多少才合适公司建设哪个方便

做视频网站 带宽多少才合适,公司建设哪个方便,ins做甜品网站,上海自贸区公司注册151. 反转字符串中的单词 1. 移除多余空格并重构字符串 这部分代码的作用是原地删除字符串里的多余空格&#xff0c;使得每个单词之间只有一个空格&#xff0c;并去除字符串首尾的多余空格。代码如下&#xff1a; int n s.size(); int slow 0; for (int fast 0; fast <…

151. 反转字符串中的单词


1. 移除多余空格并重构字符串

这部分代码的作用是原地删除字符串里的多余空格,使得每个单词之间只有一个空格,并去除字符串首尾的多余空格。代码如下:

int n = s.size();
int slow = 0;
for (int fast = 0; fast < n; fast++) {if (s[fast] != ' ') {              // 遇到非空格字符,说明遇到了一个单词的开始if (slow != 0) s[slow++] = ' ';           // 如果不是第一个单词,在复制新单词前先在结果里添加一个空格while (fast < n && s[fast] != ' ') {  // 复制这个单词(字符序列),直到遇到空格结束s[slow] = s[fast];slow++;fast++;}}
}
s.resize(slow);

详细说明:

  • 变量定义

    • n 为原始字符串长度。

    • fast:快速指针,用来遍历原字符串。

    • slow:慢速指针,用于写入处理后的字符,最开始为 0。

  • 外层 for 循环

    • 遍历字符串中每一个字符(fast 从 0 到 n-1)。

    • s[fast] 是非空格字符时,说明找到了一个单词的开始。

  • 插入空格的处理

    • if (slow != 0) 判断当前写入位置不在开头,则在新的字符串中加入一个空格。这样可以确保不同单词之间只有一个空格,并且第一个单词前不会多余空格。

  • 复制单词

    • 内层的 while 循环把当前单词从原字符串复制到 s[slow]

    • 当遇到空格或者到达末尾时,停止复制,单词就被完整复制到了前面的位置。

    • 注意:由于内层循环中已经把 fast 后移,所以外层循环之后,fast 会继续读取剩下的字符。

  • 调整字符串大小

    • s.resize(slow); 将字符串裁剪到实际写入的字符数,这样会去除尾部原字符串剩余的字符。


2. 反转整个字符串

reverse(s.begin(), s.end());

这一步将整个字符串进行反转。因为我们经过第一步得到的字符串中每个单词之间只有一个空格,整体反转后,单词的顺序也反转了,但单词内的字符顺序同时也反转了。例如:
原字符串(去掉多余空格后)是 "the sky is blue"
反转后变成 "eulb si yks eht"


3. 恢复每个单词的正确顺序

反转整个字符串后,每个单词内部的字母顺序也被反转了。为了使单词看起来正常,我们需要再把每个单词单独反转回来。

代码如下:

int index = 0;
for (int i = 0; i < s.size(); i++) {if (s[i] == ' ') {reverse(s.begin() + index, s.begin() + i);   // 翻转 [index, i) 范围内的字符,即当前单词index = i + 1;                                 // 更新下一个单词的起点}
}
reverse(s.begin() + index, s.end());                  // 最后一个单词单独反转

详细说明:

  • 变量 index

    • 表示当前单词的起始位置(即上一空格后面的位置)。

  • 遍历字符串

    • 使用 for 循环遍历整个字符串,当遇到空格时,说明已经找到了一个完整单词的边界。

  • 反转单词

    • 对于每次遇到的空格,调用 reverse(s.begin() + index, s.begin() + i) 翻转 [index, i) 区间内的字符,这正好是一个单词。

    • 然后将 index 更新为 i + 1,即下个单词的起点。

  • 处理最后一个单词

    • 遍历结束后最后一个单词后面没有空格,所以循环内部没有处理它,因此需要在循环结束后,再调用 reverse(s.begin() + index, s.end()); 翻转最后一个单词。


4. 返回最终结果

return s;

经过以上步骤,最终返回的字符串就是按照单词顺序反转后、且单词内部字符顺序正确、仅保留一个空格分隔的字符串。


总结

  1. 去除多余空格

    • 利用快慢指针遍历字符串,原地复制单词并在单词之间插入单个空格。

  2. 整体反转字符串

    • 将所有字符整体反转,这一步反转了单词的顺序,但单词内部也被反转。

  3. 反转每个单词

    • 对每个单词分别再反转一次,使单词内部字符恢复正确顺序。

  4. 返回结果

    • 得到的字符串即为“单词顺序反转且各单词间只有单个空格”的结果。

这样整个处理流程既实现了去除多余空格,又完成了单词顺序反转,同时保留了每个单词内部字符的正确顺序。

http://www.dtcms.com/a/604447.html

相关文章:

  • 168网站建设店铺装修网站
  • python 网站开发实战wordpress程序下载
  • 微信授权登录第三方网站开发万户信息 做网站怎么样
  • 招聘网站建设技术要求镇江网站制作网站建设
  • 网站页眉设计wordpress 手机版本
  • 济南能源建设网站电子商务运营平台设计
  • 眉山市规划建设局网站加快wordpress图片的插件
  • 非小号是根据国外哪个网站做的厦门企业公司电话黄页
  • 自己如何做企业网站新闻发布网站建设实训小结
  • 网站后期推广是谁来做wordpress 关闭多站点
  • 网站后台查找软件带视频的网站模板
  • 珠海企业网站设计百度提交
  • 武侯区建设局门户网站贝壳找房官网首页入口
  • 白云区网站开发湛江专业建站免费咨询
  • 数据库对于做网站的重要性成品网站能用吗
  • 如何建设网站简答题一般通过什么渠道了解防灾减灾知识?(可多选)
  • 网站建设综合技术百度推广管理平台登录
  • 网站开发公司成本是什么项目管理软件培训
  • 网站 页面风格 建设金华做网站最专业的公司
  • 如何选择响应式网站算命先生的网站怎么做
  • 网站建设论文模板公司简介概况怎么写
  • 公司管理的三大系统百度关键词优化软件排名
  • 编写软件wordpress优化教程
  • 购买了网站如何使用吗网站备案黑名单
  • 北京建设协会网站淄博网站客户
  • 网站建设教程菜鸟物流打造龙头建设示范
  • 怎么做网站软文投放平台有哪些
  • 请列举常见的网站推广方法推广计划表
  • 湛江做建站软仿网站公司建设网站首页
  • 提供佛山网站制作网站建设 业务员