题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
//翻转句子中单词的顺序 #include <iostream> using namespace std; void Reverse(char *pBegin, char *pEnd) { if(pBegin == nullptr || pEnd == nullptr) return; while(pBegin < pEnd) { char temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; pBegin ++, pEnd --; } } char* ReverseSentence(char *&pData) { if(pData == nullptr) return nullptr; char *pBegin = pData; char *pEnd = pData + strlen(pData) - 1; Reverse(pBegin, pEnd); pBegin = pData; pEnd = pData; while(*pBegin != ‘\0‘) { while (*pBegin == ‘ ‘) { ++pBegin; ++pEnd; } if(*pEnd == ‘ ‘ || *pEnd == ‘\0‘) { pEnd--; Reverse(pBegin, pEnd); ++pEnd; pBegin = pEnd; } else { pEnd++; } } return pData; } int main() { char *m_data=strdup("I am a student."); ReverseSentence(m_data); printf("%s",m_data); return 0; }
第六题 反转字符串,单词内部顺序不变,布布扣,bubuko.com
原文:http://blog.csdn.net/oqqname/article/details/23278793