当前位置: 代码迷 >> 综合 >> HOJ 1062 Text Reverse(字符串翻转,细节)
  详细解决方案

HOJ 1062 Text Reverse(字符串翻转,细节)

热度:83   发布时间:2023-12-13 19:15:27.0

字符串翻转,细节

本题要点:
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. */
  相关解决方案