您的位置:首页 > 职场人生

程序员面试题100题第07题——翻转句子中单词的顺序

2012-10-04 21:41 316 查看
题目:

输入一个英文句子,反转句子中单词的顺序,但是单词内字符顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字幕一样处理。

分析:

首先反转句子,再逐个单词反转。

代码:

注意while循环中对指针的操作;

注意const在此处的用处;程序员面试题100题第21题——左旋转字符串

char* ReverseString(char * const pStart, char * const pEnd)//反转字符串
{
char *pS=pStart;
char *pE=pEnd;

if(pS != NULL && pE != NULL)
{
char temp;
while(pS <= pE)
{
temp=*pS;
*pS=*pE;
*pE=temp;
pS++;
pE--;
}
}
return pStart;
}


char* ReverseSentence(char* const pSentence)
{
if(pSentence==NULL)
{
return NULL;
}

char* pBegin=pSentence;
char* pEnd=pSentence;
char* pTemp=pSentence;

while(*pEnd != '\0')//注意*号 最容易遗漏*
{
pEnd++;
}
pEnd--;//注意
ReverseString(pBegin, pEnd);

pBegin=pSentence;
pEnd=pSentence;

while(*pBegin != '\0')//*pBegin 最容易遗漏*
{
if(*pBegin ==' ')//开始为空格
{
pBegin++;
pEnd++;
continue;
}else if(*pEnd == ' ' ||*pEnd =='\0')
{
ReverseString(pBegin, --pEnd);
pBegin=++pEnd;
}else{
pEnd++;
}
}
return pSentence;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: