question : i love u ->u love i
analysis:
主要思想是 首先整體逆置句子,然后再尋找句子中每個(gè)單詞 做逆置。
需要分析的是: 單詞的定義?空格如何處理?標(biāo)點(diǎn)符號(hào)?
需要注意的地方就是:在需要知道單詞的結(jié)尾的時(shí)候,需要對字符串最后一個(gè)字符進(jìn)行判斷,如果仍然處于單詞中,這個(gè)時(shí)候仍然要結(jié)束這個(gè)單詞,去逆置
?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