字符串反转 "you are beautiful" 转为 "beautiful are you"

//自己想的,从数学角度考虑每一个字符的位置,注意边界位置和空格的位置

void string_revert()
{
/*
8.27 2014
成功
要点: 数学 位置 精密 
最后第一位要特别处理
算法 strDes[position+i-start]=strSrc[i];
*/
char *strSrc="You are beautiful a girl Rocky afdafasf";


int len=strlen(strSrc);
char *strDes=(char*)malloc(sizeof(char)*(len+1));
int position,start,end,single_len,i;
start=end=0;
position=len;
cout<<"Source string: "<<strSrc<<endl;
cout<<len<<endl;


while(end<=len)
{
	if(' '==strSrc[end] || '\0'==strSrc[end]) //end 到了空格就进入 
	{ 	
		single_len=end-start;
		
		position=position-single_len;
		
		if('\0'==strSrc[end])
		{
		cout<<position<<endl;
		for(i=start;i<end;i++)
		{
		strDes[position+i-start]=strSrc[i];
		cout<<strSrc[i];
		}
		break;
		}
		cout<<" space"<<end<<endl;
		cout<<" position"<<position<<endl;
		cout<<" word len"<<single_len<<endl;
		for(i=start;i<end;i++)
		{
		strDes[position+i-start]=strSrc[i];
		cout<<strSrc[i];
		}
		position=position-1;
		strDes[position]=' '; //排头第一个排除
		
		start=end+1;
	}
	
	end++;
	
}
strDes[len]='\0';
cout<<"Destination String:"<<strDes<<endl;
cout<<"lens of new string "<<strlen(strDes)<<endl;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值