首页 > 代码库 > Reverse Words in a String
Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
click to show clarification.
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
方法一:切割字符串,依次将word放入数组中,然后在逆序输出,时间复杂度为O(n),空间复杂度为O(n),代码如下:
1 class Solution { 2 public: 3 void reverseWords(string &s) { 4 int start = s.find_first_not_of(‘ ‘); //找到第一个非空格字母 5 vector<string> vstr; 6 while( start != string::npos ) { //若不是字符串结尾处 7 int pos = s.find_first_of(‘ ‘, start); //从start开始找,找到第一个空格 8 vstr.push_back( s.substr(start, pos-start) ); //切割字符串,放入向量中 9 start = s.find_first_not_of(‘ ‘, pos); //pos出开始找第一个非空格10 }11 s.clear();12 if( vstr.empty() ) return ;13 s.append(vstr[vstr.size()-1]);14 for(int i=vstr.size()-2; i>=0; --i) { //从后往前依次将字母放入string中15 s.push_back(‘ ‘);16 s.append(vstr[i]);17 }18 }19 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。