[剑指offer][面试题42]翻转单词顺序 VS 左旋转字符串
2013-10-22 09:27
567 查看
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串 "I am a student",则输出 "student.a am I " 。
题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串 "abcdefg "和数字2,该函数将返回左旋转2位得到的结果 " cdefgab "。
题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串 "abcdefg "和数字2,该函数将返回左旋转2位得到的结果 " cdefgab "。
#include <iostream> using namespace std; void reverseCore(char *pBegin, char *pEnd) { if (pBegin>=pEnd || pBegin==NULL || pEnd==NULL){ return; } while (pBegin<pEnd){ char c = *pBegin; *pBegin = *pEnd; *pEnd = c; pBegin++; pEnd--; } } char* reverseSentence(char *str) { if (str==NULL){ return NULL; } int iLen = strlen(str); if (iLen==0){ return NULL; } reverseCore(str, str+iLen-1); char *pBegin = str; char *pEnd = str; while (pEnd<str+iLen){ if (*pEnd==' '){ reverseCore(pBegin, pEnd-1); pEnd++; pBegin = pEnd; } else{ pEnd++; } } return str; } void printSentence(char *str) { if (str!=NULL){ while (*str!='\0'){ cout<<*str; str++; } cout<<endl; } } int main() { char str[] = "I am a student."; printSentence(str); char *pRev = reverseSentence(str); printSentence(pRev); }
相关文章推荐
- 剑指Offer_面试题42_翻转单词顺序 VS 左旋转字符串
- 【剑指Offer学习】【面试题42:翻转单词顺序vs左旋转字符串】
- 剑指offer 面试题42 翻转单词顺序 VS 左旋转字符串
- 【剑指offer】面试题42-翻转单词顺序VS左旋转字符串
- 【剑指offer】6.3知识迁移能力——面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer-面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer-面试题42-翻转单词顺序VS左旋转字符串
- 剑指offer 面试题42—翻转单词顺序VS左旋转字符串
- 剑指offer之面试题42翻转单词顺序VS左旋转字符串
- 剑指Offer面试题42:翻转单词顺序;左旋转字符串 Java实现
- 剑指offer 42. 翻转单词顺序VS左旋转字符串
- 【剑指offer】面试题42:单词翻转顺序&左右旋转字符串
- 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
- 【剑指offer】题42:翻转单词顺序VS左旋转字符串
- 剑指Offer面试题42(Java版):反转单词顺序VS左旋转字符串
- 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
- 剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串
- 剑指offer 面试题42 翻转单词顺序 | 左旋转字符串
- 剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)
- 剑指offer面试题[42]-反转单词顺序VS左旋转字符串