剑指offer 6.3 知识迁移能力7-反转单词顺序
来源:互联网 发布:mysql 命令修改端口号 编辑:程序博客网 时间:2024/05/16 09:26
面试题42:反转单词顺序 VS 左旋转字符串
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
思路:首先反转整个字符串。“I am a student.”=> “.tneduts a ma I”;
然后再反转每个单词。
void reserveStr(char *begin, char *end) {if(begin == NULL || end == NULL) return;while(begin < end) {char temp = *begin;*begin = *end;*end = temp;begin ++;end --;}}char *reserveSentence(char *str) {if(str == NULL)return NULL;char *begin = str;char *end = str;while(*end != '\0') {end ++;}end --;// 翻转整个句子的字符串reserveStr(begin, end);// 再把每个单词翻转回来begin = end = str;while(*begin != '\0') {if(*begin == ' ') {begin ++;end ++;} else if(*end == ' ' || *end == '\0') {reserveStr(begin, --end);begin = ++end;} else {end ++;}}return str;}int main() {//char *str = "I AM A STUDENT."; // 程序会在*pBegin = *pEnd; 处异常, // 在这种情况下str指向的是常量字符串,// 编译器不允许对常量字符串修改的缘故。//cout << reserveSentence(str) << endl;char str[] = "I AM A STUDENT.";cout << sizeof(str) << endl;cout << reserveSentence(str) << endl;return 0;}代码还不够健壮,可以用strdup()
char *str = strdup("I AM A STUDENT.");
0 0
- 剑指offer 6.3 知识迁移能力7-反转单词顺序
- 【剑指offer】6.3知识迁移能力——面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer 42题 【知识迁移能力】翻转单词顺序列
- 《剑指offer》刷题笔记(知识迁移能力):翻转单词顺序列
- 剑指offer 6.3 知识迁移能力8-左旋字符串
- 剑指offer 算法 (知识迁移能力)
- 剑指Offer:面试题42 反转单词顺序
- 剑指Offer——反转单词顺序(Java)
- 剑指Offer 42反转单词顺序 vs左旋转字符串
- 【剑指Offer】面试题42:反转单词顺序
- 剑指offer——反转单词顺序列
- 剑指offer 算法 (知识迁移能力2)
- 平衡二叉树(剑指offer)知识迁移能力
- 剑指offer 42题 【知识迁移能力】左旋转字符串
- 剑指offer 6.3 知识迁移能力1- 数字在排序数组中出现的次数
- 剑指offer 6.3 知识迁移能力2- 二叉树的深度
- 剑指offer 6.3 知识迁移能力3- 判断二叉树是否是平衡二叉树
- 剑指offer 6.3 知识迁移能力4- 数组中只出现一次的数字
- 集成ejs和angular
- STL之set姿势
- HDOJ 题目1237简单计算器(栈,逆波兰式)
- Mac OS使用技巧之二:修改变量Path解决android: command not found
- oracle口令失效
- 剑指offer 6.3 知识迁移能力7-反转单词顺序
- HTML的奇葩嵌套规则
- Identification Code
- poj 5607 A了,zoj1857wa了
- neuoj1408博弈
- 动态连接库(DLL)的基础知识
- Sql Server中的表访问方式Table Scan, Index Scan, Index Seek
- [CPP]static思考-1
- VK Cup 2012 Round 1