《剑指offer》-翻转单词顺序列
来源:互联网 发布:微商必用的视频软件 编辑:程序博客网 时间:2024/05/20 13:39
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解法:
1.将句子先完全翻转
2.再逐个单词进行翻转
3.关键在于判断单词翻转的过程,首先开始和结尾都从首字母下标出发,判定是否为空格(这里主要用在换单词时候需要),为空则表示下一个单词要开始,都进行+1;然后,在将尾部++(放到最后里面),先判断尾部为空格或者结束字符时候,但是传递参数应该是首字母到尾字母的区间,进行翻转,翻转完后首部下标跳转到尾部的下标,开始下一轮的循环。
class Solution {public: string ReverseSentence(string str) { char * start; char * end; if(str == "") return str; start = end = &str[0]; while(*end != '\0') end++; reverseOne(start, --end); start = end = &str[0]; while(*start != '\0') { if(*start == ' ') { start++; end++; } else if(*end == ' ' || *end == '\0') { reverseOne(start, --end); start = ++end; } else { end++; } } return str; } void reverseOne(char * start, char * end) { if(!(start || end)) return; for(;start < end; start++, end--) { char temp = *start; *start = *end; *end = temp; } return; }};
0 0
- 《剑指offer》翻转单词顺序列
- 剑指offer--翻转单词顺序列
- 剑指offer—翻转单词顺序列
- 剑指offer:翻转单词顺序列
- 剑指offer:翻转单词顺序列
- [剑指offer]翻转单词顺序列
- 剑指Offer--042-翻转单词顺序列
- 剑指offer题解 翻转单词顺序列
- 剑指offer|翻转单词顺序列
- 《剑指offer》-翻转单词顺序列
- 剑指offer 翻转单词顺序列
- 剑指offer-44.翻转单词顺序列
- 【剑指offer】翻转单词顺序列
- 《剑指offer》翻转单词顺序列
- 剑指offer-翻转单词顺序列
- 剑指offer--翻转单词顺序列
- 剑指offer:翻转单词顺序列
- 剑指offer 45 翻转单词顺序列
- android studio 和 eclipse jni的配置和编译
- 日文windows系统 oracle数据库乱码的处理
- mysql 无法修改授权
- linux shell脚本替换反斜杠
- java学习笔记——基本程序设计结构
- 《剑指offer》-翻转单词顺序列
- 今天的学习
- 签名添加
- Volley的使用以及源码分析(一)
- 四元数
- jsp访问数据库问题
- Android 接口回调机制详解
- GCD API 理解 (一)
- 倒计时模块