题目描述
Given an input string, reverse the string word by word.
题目大意
输入一个字符串,将字符串中的单词按倒序排列(单词中的字母不要倒叙排列)。
示例
E1
Input: "the sky is blue" Output: "blue is sky the"
E2
Input: " hello world! " Output: "world! hello"
E3
Input: "a good example" Output: "example good a"
解题思路
遍历一遍字符串即可,遍历过程中保存该遍历位置不为空格的字符,若遇到空格跳过即可,每次将获得的空格之间的子字符串插入到结果的首位即可。
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)
代码
class Solution { public: string reverseWords(string s) { string ans = ""; //遍历字符串 for(int i = 0; i < s.length(); i++) { string temp = ""; //查找符合条件的子字符串并保存 int j = i; while(j < s.length() && s[j] != ' ') { temp += s[j]; j++; } if(temp.length()) ans.insert(0, (temp + ' ')); i = j; } //删除答案最后多余的空格符 ans.pop_back(); return ans; } };