题解 | #句子逆序#
句子逆序
https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3
#include <iostream> // 该头文件包含“reverse()”函数 #include <algorithm> using namespace std; int main() { string s; // 输入中包含空格,所以采用getline作为读取输入的方式 getline(cin, s); int n = s.size(); reverse(s.begin(), s.end()); for (int i = 0; i < n; i++) { int sta = i; while ((i < n && s[i] != ' ') || i==n-1 ) { i++; } int en = i; reverse(s.begin() + sta, s.begin() + en); } cout << s << endl; return 0; } // 64 位输出请用 printf("%lld")
经典的全部反转再挑选非空格的部分进行翻转的思路。
需要注意的是,部分翻转的情况总是要注意最后一个字符的结尾不是空格而是结束符,需要把这一点考虑进去。