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

微信如何做自己的网站西安seo王尘宇

微信如何做自己的网站,西安seo王尘宇,网站建设管理与政府,网站群系统建设标准目录 151、反转字符串中的单词题目描述思路代码本题反思 151、反转字符串中的单词 题目描述 给你一个字符串 s ,请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个…

目录

  • 151、反转字符串中的单词
    • 题目描述
    • 思路
    • 代码
    • 本题反思

151、反转字符串中的单词

题目描述

给你一个字符串 s ,请你反转字符串中单词的顺序。

单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。

返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

要求:空间复杂度为O(1);

思路

  1. 去除多余空格:收尾无空格,单词之间只有一个空格
  • 定义快慢指针,快指针负责寻找正确的元素,慢指针负责从头开始给字符串赋值。
  1. 反转字符串
  2. 反转单个单词

代码

class Solution {
public://原地反转字符串void reverse(string& s, int start, int end) {for (int i = start, j = end; i < j; i++,j--) {swap(s[i], s[j]);//交换操作}}//去除多余空格void removeExtraSpaces(string& s) {int slowIndex = 0, fastIndex = 0; // 定义快指针,慢指针// 去掉字符串前面的空格while (s.size() > 0 && fastIndex < s.size() && s[fastIndex] == ' ') {fastIndex++;}for (; fastIndex < s.size(); fastIndex++) {// 去掉字符串中间部分的冗余空格if (fastIndex - 1 > 0 && s[fastIndex] == ' ' && s[fastIndex - 1] == s[fastIndex]) {continue;} else {s[slowIndex++] = s[fastIndex];}}if (slowIndex - 1 > 0 && s[slowIndex - 1] == ' ') { // 去掉字符串末尾的空格s.resize(slowIndex - 1);} else {s.resize(slowIndex); // 重新设置字符串大小}
}//反转字符串中的单词string reverseWords(string s) {removeExtraSpaces(s);//去除多余空格reverse(s, 0, s.size() - 1);//原地反转所有字符//开始逐个反转单词int start = 0;//指向每一个单词的开头for (int i = 0; i <= s.size(); ++i) {if (i == s.size() || s[i] == ' ') {//到达空格或字符串尾部,说明一个单词结束,进行反转reverse(s, start, i - 1);start = i + 1;//把start指向下一个单词的开头}}return s;}
};

优化【去除多余空格函数】之后的代码

class Solution {
public://原地反转字符串void reverse(string& s, int start, int end) {for (int i = start, j = end; i < j; i++,j--) {swap(s[i], s[j]);//交换操作}}//去除空格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);//slow的大小就是删除多余空格后字符串的大小
}//反转字符串中的单词string reverseWords(string s) {removeExtraSpaces(s);//去除多余空格reverse(s, 0, s.size() - 1);//原地反转所有字符//开始逐个反转单词int start = 0;//指向每一个单词的开头for (int i = 0; i <= s.size(); ++i) {if (i == s.size() || s[i] == ' ') {//到达空格或字符串尾部,说明一个单词结束,进行反转reverse(s, start, i - 1);start = i + 1;//把start指向下一个单词的开头}}return s;}
};

时间复杂度:O(n);
空间复杂度:O(1);原地修改字符串。

本题反思

  • 对于字符串的操作类似于数组,也是利用双指针查找正确元素然后进行覆盖操作达到修改字符串的目的。
  • 寻找正确字符的过程就是去除多余空格的过程。
  • 比起整体反转字符串,加入了在整体字符串中反转其中的单词,这需要额外添加条件判断。
http://www.ds6.com.cn/news/121900.html

相关文章:

  • mobile wordpressseo01
  • 做外国网站买域名潍坊网站模板建站
  • 外贸网站建设公司价格网站域名费一年多少钱
  • 南通中小企业网站制作国际外贸网络交易平台
  • 宁波市住房和城乡建设局网站首页湖南优化电商服务有限公司
  • 标准件做网站推广效果怎么样推广品牌的方法
  • 湛江seo网站管理seo入门培训学多久
  • 怎么看一个网站什么语言做的关键词挖掘工具有哪些
  • 门户网站建设方案中信息公开百度站长工具seo
  • 做视频网站有什么百度账号安全中心官网
  • 福鼎市城市建设监察大队网站靠谱的代写平台
  • 做网站域名有什么用网站点击量查询
  • 空壳网站查询手机地图app下载安装
  • 网站开发用什么软件珠海百度搜索排名优化
  • 电子政务与网站建设的经验东莞网络营销代运营
  • 文安做网站站长工具视频
  • wordpress滑动文本框知乎关键词排名优化
  • 中国人寿寿险保险公司官方网站网络推广外包内容
  • app 微商城网站建设深圳百度代理
  • 网站怎么更改关键词百度一下浏览器下载安装
  • 开学第一课汉字做网站十大互联网广告公司
  • 做网站建设的网络公司经营范围怎样填软文写作是什么意思
  • 怎么看一个网站做没做竞价东莞建设企业网站公司
  • 小程序就是做网站国内搜索引擎排名
  • 运营一个网站的费用推广策略怎么写
  • 湖北网站建设费用世界球队最新排名
  • 大良品牌网站建设郑州推广优化公司
  • 娄底网站建设报价seo初级入门教程
  • 网站备案号被注销上海seo网站策划
  • 专业服务网站开发百度知道首页官网