题目:请编写一个函数颠倒单词在字符串里的出现顺序。比如说,你的函数应该把字符串"Now we are one!"转换为"one! are we Now"。假设所有单词都以空格为分隔符,标点符号也被当作字符看待。
代码:
void ReverseString(char str[], int start, int end)
{
char tmp;
//exchange characters and move ptr to middle
while(start < end)
{
tmp = str[end];
str[end --] = str[start];
str[start ++] = tmp;
}
}
void ReverseWords(char str[])
{
int slen = 0;
int start = 0;
int end = 0;
slen = strlen(str);
//reverse entire string
ReverseString(str, start, slen - 1);
start = end = slen - 1;
while(start >= 0)
{
//find a non-word character or the beginning of the string
if(str[start] == ' ' || start == 0 )
{
slen = start;
if(start != 0)
++ start;
//reverse a word
ReverseString(str, start, end);
//move ptr to next word
start = end = slen - 1;
}
else
{
-- start;
}
}//while
}
代码:
void ReverseString(char str[], int start, int end)
{
char tmp;
//exchange characters and move ptr to middle
while(start < end)
{
tmp = str[end];
str[end --] = str[start];
str[start ++] = tmp;
}
}
void ReverseWords(char str[])
{
int slen = 0;
int start = 0;
int end = 0;
slen = strlen(str);
//reverse entire string
ReverseString(str, start, slen - 1);
start = end = slen - 1;
while(start >= 0)
{
//find a non-word character or the beginning of the string
if(str[start] == ' ' || start == 0 )
{
slen = start;
if(start != 0)
++ start;
//reverse a word
ReverseString(str, start, end);
//move ptr to next word
start = end = slen - 1;
}
else
{
-- start;
}
}//while
}