随笔 - 17  文章 - 44  trackbacks - 0
<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

留言簿

随笔档案(17)

文章分类

推荐博客

最新评论

阅读排行榜

将字符串里词顺序倒置,如"Times New Roman"变为"Roman New Times"。以空格为分隔符。

解决方案为:先将整个字串倒置,然后依次把倒置后串中的每一个单词倒置。

这个问题解答的思路很简单,但是要考虑到很多种的情况,比如字符串的头、尾有多余的空格怎么办,如果字符串中只有空格,还有字符串中间可能会有两个以上并列的空格。

程序如下:

 1 void ReverseStr(char *pStr, int len)
 2 {
 3     assert(pStr);
 4     
 5     char ch;
 6     for (int i = 0; i < len/2 ; i++)
 7     {
 8         ch = pStr[i];
 9         pStr[i] = pStr[len-1-i];
10         pStr[len-1-i] = ch;
11     }
12 }
13 
14 void ReverseStrWord(char *pStr, int len)
15 {
16     assert(pStr);
17 
18     if (len <= 1)
19         return;
20 
21     // 倒置整个字符串
22     ReverseStr(pStr, len);
23 
24     // 处理头多余的空格
25     int i = 0;
26     if (pStr[0== ' ')            while (pStr[i] == ' ' && i < len)        i++;
27 
28     // 整个串都是空格
29     if (i == len)
30         return;
31 
32     // 处理尾多余的空格
33     if (pStr[len - 1== ' ')    while (pStr[len - 1== ' ' && len - 1 > 0)    len--;
34 
35     for (int start = i; i < len; i++)
36     {
37         // 最后的end要+1
38         if (i == len-1)
39         {
40             ReverseStr(pStr+start, i-start+1);
41             break;
42         }
43 
44         // 倒置一个单词
45         if (pStr[i] == ' ')
46         {
47             ReverseStr(pStr+start, i-start);
48             start = i+1;
49             // 处理内部并列的空格
50             if (pStr[start] == ' ')
51             {
52                 while(pStr[start] == ' ') {i++;start++;};
53             }
54         }
55     }
56 }
57 

 

说实话,如果是突然面对这样一个问题,要在一张纸上写下比较完整的程序是不大可能。能边调试边写程序有的时候也是一件幸事。
中秋节要到了,我要换工作了,告别已经工作两年多熟悉的环境,感觉这两年没有太大的进步,奋斗吧,趁着自己还年轻!

posted on 2008-09-12 20:42 胡满超 阅读(272) 评论(2)  编辑 收藏 引用

FeedBack:
# re: 将字符串里词顺序倒置 2008-09-13 13:39 独履_天涯
楼主现在做什么工作啊,不知道要换什么工作啊?  回复  更多评论
  
# re: 将字符串里词顺序倒置 2008-09-14 22:00 胡满超
现在在一家公司做程序员,换到另外一家还做程序员,呵呵。  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: