按单词反转字符串

本文介绍了一种特殊的字符串反转方法,不仅整体反转字符串,还能保持单词原有的顺序。通过两次遍历,首先整体反转,然后单独反转每个单词,实现了效果如Hereiswww.zhuxinquan.com变为www.zhuxinquan.comisHere。代码示例展示了如何使用C语言实现这一功能。
                并不是简单的字符串反转,而是按给定字符串里的单词将字符串倒转过来,就是说字符串里面的单词还是保持原来的顺序,这里的每个单词用空格分开。例如:
Here is www.zhuxinquan.com
经过反转后变为:
www.zhuxinquan.com is Here

如果只是简单的将所有字符串翻转的话,可以遍历字符串,将第一个字符和最后一个交换,第二个和倒数第二个交换,依次循环。其实按照单词反转的话可以在第一遍遍历的基础上,再遍历一遍字符串,对每一个单词再反转一次。这样每个单词又恢复了原来的顺序。


先参考文章:

http://www.360doc.com/content/14/0306/23/16145154_358375004.shtml


自己实现的:

void reverse_str(char* strInput,int nStart,int nEnd)if ( nStart >= nEnd || nStart <0 || nEnd >= strlen(strInput)) {  return; } while(nStart < nEnd) {  char cTemp = strInput[nStart];  strInput[nStart] = strInput[nEnd];  strInput[nEnd] = cTemp;  nStart++;  nEnd--; }}//完成单词倒转,比如"i am who"转换成"who am i"void reverse_word(char* strInput)//转换成ohm ma i reverse_str(strInput,0,strlen(strInput)-1); //ohw ma i 每个单词反转 char* strStart = strInput; int nStart = 0int nEnd = 0while( *strInput != '\0') {  if ( *strInput == ' ')  {   reverse_str(strStart,nStart,nEnd-1);   nStart = nEnd +1;   strStart = strInput;  }  nEnd ++;  strInput ++; }}




           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值