北邮oj反转单词

北邮oj反转单词
北邮oj反转单词
本题的方法就是先将字符串总体反转一次,然后从头遍历,遇到空格或‘\0’再将这个单词单独反转1次。

#include<bits/stdc++.h>
using namespace std;
int main(){
	char str[1005];
  	while(gets(str)!=NULL){//gets()遇到结尾返回NULL
	int left = 0,right = strlen(str)-1;
	while(left<right){
		char a = str[left];
		str[left] = str[right];
		str[right] = a;
		left++;
		right--;
	}
	left = 0;
	for(int i=0;i<=strlen(str);i++){
		if(str[i]==' '||str[i]=='\0'){
			right = i-1;
			while(left<right){
				char a = str[left];
				str[left] = str[right];
				str[right] = a;
				left++;
				right--;
			}
			left = i+1;//left要移到i后面1位,
		}
	}
	puts(str);
	}
	return 0;
}