翻转字符句子中单词顺序

来源:互联网 发布:java 正则表达式 * 编辑:程序博客网 时间:2024/06/08 07:09

    对于给定一句字符,将其进行翻转。如" I  am a student." 翻转后的结果为"student. a am I"。代码如下:

 


#include<stdafx.h>
#include<stdlib.h>
#include<stdio.h>
#include<string>
//翻转句子中单词顺序
void reserve(char* data,int begin,int end)    //注意字符串过界
{
    if(begin>end)
  return;
    int a=end;
 int m=begin+(end-begin)/2;
 for(int i=begin;i<m;i++)
 {
  char b=data[i];
  data[i]=data[a-1];
  data[a-1]=b;
  a--;
 }
    return;
}
void allreserve(char* data)
{
 int len=strlen(data);
    int begin=0;
 int end=0;
 int i=0;
 if(data[0]==' ')
 {
  i++;
  begin=end=1;
 }
 for(;i<len;i++)
 {
 
  while(data[i]!=' '&&data[i]!='\0')
  {
     i++;
     end++;
  }
  if(end!=begin)
  {
   reserve(data,begin,end);
  }
     begin=end+1;
  end=begin;
 }
}

int main(int argc,char** argv)
{
    char data[]="I am a student.";
 int len=strlen(data);
 printf("before reserve:%s\n",data);
 allreserve(data);
 reserve(data,0,len);
 printf("after reserve:%s\n",data);
 return 0;
}

原创粉丝点击