question : i love u ->u love i
analysis:
主要思想是 首先整体逆置句子,然后再寻找句子中每个单词 做逆置。
需要分析的是: 单词的定义?空格如何处理?标点符号?
需要注意的地方就是:在需要知道单词的结尾的时候,需要对字符串最后一个字符进行判断,如果仍然处于单词中,这个时候仍然要结束这个单词,去逆置
1
void 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
1
void 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