剑指offer——面试题42:翻转单词序列
2017-12-14 20:50
239 查看
题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
分析:这道题题目描述有非常大的问题!!!《剑指offer》书上描述是对的,如果给出 "I am a student. ",注意,最后一个单词后面有个空格,否则,程序怎么改都是通过 0.00%,但是输出结果是相同的,只能说,牛客网坑人啊!
我的代码:
如果使用 STL reserve() 函数,更简单了
分析:这道题题目描述有非常大的问题!!!《剑指offer》书上描述是对的,如果给出 "I am a student. ",注意,最后一个单词后面有个空格,否则,程序怎么改都是通过 0.00%,但是输出结果是相同的,只能说,牛客网坑人啊!
我的代码:
class Solution { public: string ReserveWord(string str1) { string word; string reverseSentence; for (int i = 0; i < str1.size(); i++) { while (str1[i] != ' ' && str1[i] != NULL) // 必须加一个 != NULL,否则会多输出一个随机值 { word += str1[i]; cout << i << endl; cout << word << endl; i++; if (str1[i] == ' ') { //cout << "跳出来一次" << endl; break; // 第一次跳出break,word = .tneduts } } // 处理word ,将其颠倒,然后清空 for (int i = word.size() - 1; i >= 0; --i) { reverseSentence += word[i]; } reverseSentence += ' '; // 补充一个空格 word.erase(); } return reverseSentence; } string ReverseSentence(string str) { string tempstr; string reverse_str; for(int i = str.size() -1; i >= 0; --i) { tempstr += str[i]; // 将整个字符串完全颠倒。如 i am student. ->.tneduts ma i } reverse_str = ReserveWord(tempstr); return reverse_str; } };
如果使用 STL reserve() 函数,更简单了
class Solution { public: string ReverseSentence(string str) { int size = str.size(); reverse(str.begin(), str.end()); // 注意:翻转后的第一个字符是空格 int start = 0; for(int i = 0; i < size; ++i) { if(str[i] == ' ') { reverse(str.begin()+start, str.begin()+i); start = i+1; // 每个单词的第一个下标 } if(i == size-1) // 翻转最后一个单词 reverse(str.begin()+start, str.end()); } return str; } };
相关文章推荐
- 剑指offer--面试题42: 翻转单词顺序列 vs 左旋转字符串
- 面试题42. 翻转单词序列
- 剑指offer-面试题42-翻转单词顺序VS左旋转字符串
- 剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串
- 剑指offer 42题 【知识迁移能力】翻转单词顺序列
- (剑指Offer)面试题42:翻转单词顺序
- 剑指Offer系列-面试题42:翻转单词顺序和左旋转字符串
- 剑指offer——面试题42:翻转单词顺序VS左旋转字符串
- 剑指offer系列之42:翻转单词序列
- 《剑指Offer》学习笔记--面试题42:翻转单词顺序VS坐旋转字符串
- 剑指offer 面试题42 翻转单词顺序
- 面试题42:翻转单词顺序
- 剑指offer面试题42_1翻转单词顺序(java实现)
- 【剑指offer】面试题42-翻转单词顺序VS左旋转字符串
- 剑指offer 面试题42 翻转单词顺序 | 左旋转字符串
- 牛客:剑指offer:翻转单词顺序列 (Java)
- 剑指offer(四十一)之翻转单词顺序列
- 剑指offer——翻转单词顺序列
- 剑指offer-翻转单词顺序列
- 【剑指offer】6.3知识迁移能力——面试题42:翻转单词顺序VS左旋转字符串