HDOJ-1062,字符串反转
题目描述
解题思路
解题思路比较直接,寻找出空格分隔出的各个子串,但提交后一直PE,下意识以为自己的代码输出有问题,但是没找出来,后面看了博客发现是自己默认空格只有一个。因为当时使用了strtok()函数来直接分隔出每个子串,但是分隔符是不能包含到分隔出的子串中的,所以一直PE。以下是源代码
源代码
#include <iostream>
#include <string>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char** argv) {
string ah;
int first,end,i,num;
while(scanf("%d\n",&num) != EOF)
{
while(num--)
{
getline(cin,ah);
end = first = -1;
for(i = 0; i <= ah.length(); i++)
{
if(first == -1)
{
if(ah[i] != ' ')
{
first = i;
}
}
else
{
if(ah[i] == ' ' || i == ah.length())
end = i;
}
if(end != -1)
{
reverse(ah.begin() + first, ah.begin() + end);
first = end = -1;
}
}
cout << ah << endl;
}
}
return 0;
}
想法
一道水题但是做了挺久的,因为想在刷题的同时稍微熟悉一下C++的库,所以费了点时间。最后,希望多多指教。