题目
输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。
翻转句子中单词的顺序,但单词内字符的顺序不变。
为简单起见,标点符号和普通字母一样处理。
例如输入字符串"I am a student."
,则输出"student. a am I"
。
数据范围
输入字符串长度 。
样例
输入:"I am a student."
输出:"student. a am I"
题解
不用reverse函数实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public: string reverseWords(string s) { string arr[1010]; string t, res; int idx = -1; for (int i = 0; i <= s.size(); ++ i) { if (i == s.size() || s[i] == ' ') { arr[++idx] = t; t = ""; } else t += s[i]; }
for (int i = idx; i >= 0; -- i) { res += arr[i]; if (i > 0) res += ' '; }
return res; } };
|
reverse函数实现
代码精简了很多
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public: string reverseWords(string s) { reverse(s.begin(), s.end()); for (int i = 0; i < s.size(); ++ i) { int j = i; while (j < s.size() && s[j] != ' ') ++ j; reverse(s.begin() + i, s.begin() + j); i = j; } return s; } };
|