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

网页游戏传奇霸业攻略南昌seo排名公司

网页游戏传奇霸业攻略,南昌seo排名公司,.net网站开发岗位,怎么在电脑上自己做网站吗题目: 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会…

题目:

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

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

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

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

示例 1:

输入:s = "the sky is blue"
输出:"blue is sky the"

示例 2:

输入:s = "  hello world  "
输出:"world hello"
解释:反转后的字符串中不能存在前导空格和尾随空格。

示例 3:

输入:s = "a good   example"
输出:"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

提示:

  • 1 <= s.length <= 104
  • s 包含英文大小写字母、数字和空格 ' '
  • 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) {for (int i = s.size() - 1; i > 0; i--) {if (s[i] == s[i - 1] && s[i] == ' ') {s.erase(s.begin() + i);}}// 删除字符串最后面的空格if (s.size() > 0 && s[s.size() - 1] == ' ') {s.erase(s.begin() + s.size() - 1);}// 删除字符串最前面的空格if (s.size() > 0 && s[0] == ' ') {s.erase(s.begin());}
}string reverseWords(string s) {removeExtraSpaces(s); //去除多余空格,保证单词之间之只有一个空格,且字符串首尾没空格。reverse(s, 0, s.size() - 1);int start = 0; //removeExtraSpaces后保证第一个单词的开始下标一定是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;}
};

分析:

一个erase本来就是O(n)的操作,erase操作上面还套了一个for循环,那么以上代码移除冗余空格的代码时间复杂度为O(n^2)。

那么使用双指针法来去移除空格,最后resize(重新设置)一下字符串的大小,就可以做到O(n)的时间复杂度。

改进代码:

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 - 1] == s[fastIndex]&& s[fastIndex] == ' ') {continue;} else {s[slowIndex++] = s[fastIndex];}}if (slowIndex - 1 > 0 && s[slowIndex - 1] == ' ') { // 去掉字符串末尾的空格s.resize(slowIndex - 1);} else {s.resize(slowIndex); // 重新设置字符串大小}
}

思考过程:先移除字符串前的空格,再移除中间的,再移除后面部分。

http://www.dtcms.com/wzjs/411164.html

相关文章:

  • 安阳县属于哪个省哪个市win10一键优化工具
  • 权威的广州h5网站网络营销服务商
  • 金堂做网站的公司百度热搜榜历史
  • 网站换新域名电商平台排名
  • 青岛模板建站代理免费seo关键词优化排名
  • 网站专业销售团队介绍营销渠道策略有哪些
  • 西宁中小企业网站建设网站查询关键词排名软件
  • 邹平做网站苹果要做搜索引擎
  • 长沙网站优化厂家网站seo推广哪家值得信赖
  • 常见的电子商务网站网址郑州网站推广方案
  • 南昌做网站开发的公司有哪些服装品牌策划方案
  • 比较好的做网站公司合肥今日头条新闻
  • 谁有人和兽做的网站?凡科建站的免费使用
  • 网站在淘宝上做靠谱吗免费网站电视剧全免费
  • 体育新闻最新消息今天网络推广和信息流优化一样么
  • 天津建设工程信息网专家库官网合肥网络推广优化公司
  • wordpress用户上传太原seo关键词排名
  • 做金融的免费发帖的网站有哪些网络推广怎么做效果好
  • java调接口做网站徐州seo排名收费
  • 免费 成品模板网站四川seo多少钱
  • 西安商城类网站制作南京seo网站管理
  • 施工企业负责人每月带班时间不少于牛排seo
  • 网站有信心做的更好上海市人大常委会
  • 英文网站建设需求seo需要懂代码吗
  • 用meteor框架做的微博网站上首页的seo关键词优化
  • 比较好的网站建设品牌升级app推广软件有哪些
  • 网站设计流程步骤国内新闻最新消息
  • 网站制作的流程是什么如何免费注册网站
  • mvc实现新闻网站开发如何优化搜索关键词
  • 用dw做的网站容易变形中央人民政府网