字符串翻转,细节
本题要点:
1、空格可能有多个
2、字符串前缀和后缀都有空格
3、用 getline 读入字符串
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int T;
string s;void reverse(int a, int b)
{
for(int i = a; i <= a + (b - a) / 2; ++i){
swap(s[i], s[a + b - i]); }
}void solve()
{
int i = 0, j = 0, len = s.size();while(j < len && (s[j] == ' ' || s[j] == '\t'))++j;i = j;while(j < len){
while(j < len && s[j] != ' ' && s[j] != '\t') //找到一个空格 或者 j == len{
++j;}reverse(i, j - 1);while(j < len && (s[j] == ' ' || s[j] == '\t')) //找到一个非空格 或者 j == len{
++j;}i = j;}
}int main()
{
scanf("%d", &T);getchar();while(T--){
getline(cin, s);solve();printf("%s\n", s.c_str());}return 0;
}/* 3 olleh !dlrow m'I morf .udh I ekil .mca *//* hello world! I'm from hdu. I like acm. */