坚持到底就是胜利

用心去做好这件事情

统计

留言簿(1)

阅读排行榜

评论排行榜

dream come true!(1)

question : i love u ->u love i
analysis:
主要思想是 首先整体逆置句子,然后再寻找句子中每个单词 做逆置。
需要分析的是: 单词的定义?空格如何处理?标点符号?
需要注意的地方就是:在需要知道单词的结尾的时候,需要对字符串最后一个字符进行判断,如果仍然处于单词中,这个时候仍然要结束这个单词,去逆置
 1void reverse(char *s,int start,int end)
 2
 3   if(s == null || start > end )
 4       return;
 5   for(int i = start,j = end; i < j;i++,j--)
 6    {
 7      char temp = s[i];s[i] = s[j];s[j] = temp;
 8      }

 9}

10
 1void reverse_word(char *s)
 2{
 3  if(s == null)
 4    return;
 5  int len = strlen(s);
 6  reverse(s,0,len-1);
 7  
 8  int flag = 0;// word doesnot begin
 9  int i = 0,start = 0,end = 0;
10  while(s[i] != '\0')
11  {
12     if(isalpha(s[i]) && flag == 0)
13     {
14        start = i;
15        flag = 1;
16     }

17     else if(flag == 1 && !isalpha(s[i]))
18    {
19      end = i-1;
20      reverse(s,start,end);
21      flag = 0;  
22     }

23     else if(flag == 1 && s[i+1== '\0')
24     {
25         if(isalpha(s[i]))
26           end = i;
27        else 
28            end = i-1;
29        reverse(s,start,end);   
30   }

31   i++;
32   }

33
34}

35

posted on 2006-11-19 21:01 ailab 阅读(168) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理