字符串操作

1. 将句子中的单词逆序

eg.”hello world” ==> “world hello”

 1 char* reverseStr(char* p_StrHead, char* p_StrEnd){
 2      if(p_StrHead == NULL || p_StrEnd == NULL)return NULL;
 3      char ch = 0;
 4      while(p_StrHead < p_StrEnd){
 5          ch = *p_StrHead;
 6          *p_StrHead++ = *p_StrEnd;
 7          *p_StrEnd--  = ch;
 8      }
 9      return p_StrHead;
10 }
11 
12 char* reverseWord(char* str){
13      if(str == NULL)return NULL;
14 
15     size_t len = strlen(str);
16      reverseStr(str, str+len-1);
17      char* p_head = str;
18      char* p_end  = str;
19      size_t i = 0;
20 
21     while(i<len-1){
22          if(*p_end == ' ' || *p_end == '\0'){
23              reverseStr(p_head, p_end-1);
24              p_head = p_end+1;
25          }
26          p_end++;
27          i++;
28      }
29      return str;
30 }
31 
32  
33 
34 int main(void/*int arg, char** agrv*/)
35 {
36     char srcStr[] = "  x HTTP is my study "; //
37      cout <<  reverseWord(srcStr) << endl;
38      return 0;
39 }char* reverseStr(char* p_StrHead, char* p_StrEnd){
40      if(p_StrHead == NULL || p_StrEnd == NULL)return NULL;
41      char ch = 0;
42      while(p_StrHead < p_StrEnd){
43          ch = *p_StrHead;
44          *p_StrHead++ = *p_StrEnd;
45          *p_StrEnd--  = ch;
46      }
47      return p_StrHead;
48 }
49 
50 char* reverseWord(char* str){
51      if(str == NULL)return NULL;
52 
53     size_t len = strlen(str);
54      reverseStr(str, str+len-1);
55      char* p_head = str;
56      char* p_end  = str;
57      size_t i = 0;
58 
59     while(i<len-1){
60          if(*p_end == ' ' || *p_end == '\0'){
61              reverseStr(p_head, p_end-1);
62              p_head = p_end+1;
63          }
64          p_end++;
65          i++;
66      }
67      return str;
68 }
69 
70  
71 
72 int main(void/*int arg, char** agrv*/)
73 {
74     char srcStr[] = "  x HTTP is my study "; //
75      cout <<  reverseWord(srcStr) << endl;
76      return 0;
77 }

 

posted on 2018-09-25 12:42 lMimjx 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值