/*
* ReverseString.cpp
*
* Created on: 2011-7-4
* Author: zq
*/
#include <iostream>
#include <string>
using namespace std;
void ReverseStrings(char* arr){
for(int i=0,j = strlen(arr)-1;i<j;++i,--j){
char ch = arr[i];
arr[i] = arr[j];
arr[j] = ch;
}
}
void ReverseWords(char* arr){
char* p = arr;
int len = strlen(arr);
int i = 0;
cout << "len: " << len << endl;
while(i<len){
while(*p != '\0' && *p == ' '){
p++;
i++;
}
int j = i;
while(*p != '\0' && *p != ' '){
p++;
i++;
}
for(int k = j,q = i-1;k<q;++k,--q){
char ch = arr[k];
arr[k] = arr[q];
arr[q] = ch;
}
}
}
int main(){
char arr[] = "wo shi yi ming gong chan dang yuan !";
cout << "Before reverse arr: " << arr << endl;
ReverseStrings(arr);//需要两次反转,第一步是整个句子的反转
ReverseWords(arr);//第二步是单词的反转
cout << "After reverse arr: " << arr << endl;
return 0;
}
输出结果:
Before reverse arr: wo shi yi ming gong chan dang yuan !
len: 36
After reverse arr: ! yuan dang chan gong ming yi shi wo