LeetCode刷题(108)~反转字符串中的单词 III【易错】

举报
海轰Pro 发表于 2021/08/06 00:59:08 2021/08/06
【摘要】 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例: 输入:"Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc" 12 提示: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 解答 By 海轰 提交代码 st...

题目描述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"

  
 
  • 1
  • 2

提示:

  • 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

解答 By 海轰

提交代码

string reverseWords(string s) { int i=0; string res; while(i<s.length()) { while(s[i]==' ') ++i; string temp=""; while(s[i]!=' '&&(i<s.length())) { temp+=s[i]; ++i; } reverse(temp.begin(),temp.end()); res+=temp; if(i<s.length()) res+=' '; } return res; }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

运行结果
在这里插入图片描述

解答

Demo

string reverseWords(string s) { istringstream ss(s); string res, str; while(ss >> str) { reverse(str.begin(),str.end()); res += str + " "; } return res.substr(0,res.length() - 1); }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行结果
在这里插入图片描述
Demo(原地反转)

 string reverseWords(string s) { int n = s.size(); if(!n) return s; int left = 0, right = 0; while(right<n){ while(right<n && s[right]!=' ') right++; //找到下一个空格 int next = right-- + 1; //next是翻转完这个单词之后,left和right接下来要反转的单词的开始 while(left<right) swap(s[left++],s[right--]); //原地翻转 left = next; right = next; //指针跳到下一个判断位 } return s; }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行结果
在这里插入图片描述

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/108293835

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。