将一个句子中的单词逆转问题

问题描述:

  将一个句子中的单词逆转问题,例如:“I am Chinese!” 逆转后为:“Chinese! am I”

解决方法一:

  先将整个句子逆转,然后逆转以单词为一个单位,一次逆转每一个单词。

 1 /*
 2 逆转单个单词
 3 参数1为要逆转的单词,参数2为逆转的起始位置,参数3为逆转的结束位置
 4 如abcdefg,起始位置为1,结束位置为4,那么逆转后的结果为aedcbfg
 5 */
 6 void ReverseWord(char *word, int starti, int endi)
 7 {
 8     if (NULL == word)
 9         return;
10     char *begin, *end;
11     begin = word + starti;
12     end = word + endi;
13     char *tmp = new char();
14     while (begin <  end && *begin != '\0')
15     {
16         *tmp = *begin;
17         *begin = *end;
18         *end = *tmp;
19         begin++;
20         end--;
21     }
22 }
23 /*
24     逆转一个句子
25 */
26 void ReverseWords(char *sentence)
27 {
28     if (NULL == sentence)
29         return;
30     char *begin = sentence, *end = sentence;
31     while (*end != '\0')
32         end++;
33     end--;//最后一个字符是'\0'
34     ReverseWord(sentence, 0, end - begin);//先将句子逆转一遍
35     //接下来逆转每一个单词
36     char *starti = begin;
37     char *endi = begin;
38 
39     while (starti <= end && *starti != '\0')
40     {
41         while (*endi != ' ' && *endi != '\0')
42             endi++;
43         endi--;
44         ReverseWord(sentence, starti - begin, endi - begin);
45         endi += 2;
46         starti = endi;
47     }
48 }

 

转载于:https://www.cnblogs.com/happyxixi/p/5354429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值