标签:面试题 58 offer ++ pData char pBegin pEnd include
/* 题目: 输入一个英文句子,翻转单词顺序,但单词内部顺序不变。 */ /* 思路: 先翻转整个句子,再将每个单词分别翻转一次。 */ #include<iostream> #include<cstring> #include<vector> #include<algorithm> #include<map> using namespace std; void verse(char* pBegin,char* pEnd){ while(pEnd > pBegin){ char temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; pBegin++; pEnd--; } } char* ReverseSentence(char* pData){ char* pBegin = pData; char* pEnd = pData; while(*pEnd != '\0'){ pEnd++; } pEnd--; verse(pBegin,pEnd); char* res = pData; pBegin = pEnd = pData; while(*pBegin != '\0'){ if(*pBegin == ' '){ pBegin++; pEnd++; }else if(*pEnd == ' ' || *pEnd == '\0'){ verse(pBegin,--pEnd); pBegin = ++pEnd; }else{ pEnd++; } } return pData; } int main(){ char pData[] = "I am a student."; char* res = ReverseSentence(pData); while(*res != '\0'){ cout<<*res; res++; } }
标签:面试题,58,offer,++,pData,char,pBegin,pEnd,include 来源: https://www.cnblogs.com/buaaZhhx/p/12109528.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。