• 剑指offer(C++)-JZ73:翻转单词序列(数据结构-队列 & 栈)


    作者:翟天保Steven
    版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

    题目描述:

    牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

    数据范围:1≤n≤100 
    进阶:空间复杂度 O(n)  ,时间复杂度 O(n)  ,保证没有只包含空格的字符串

    示例:

    输入:

    "nowcoder. a am I"
    

    返回值:

    "I am a nowcoder."

    解题思路:

    本题考察数据结构队列 & 栈的使用。两种解法:

    1)利用栈先进后出特性。遍历字符串,拆分各个子串放入栈;遍历栈,依次弹出。注意除了最后一个子串,其他的子串都要带一个空格。

    2)利用STL库reverse翻转函数。先整体翻转一次,再遍历确定各个子串,对子串进行二次翻转。

    测试代码:

    解法一:栈

    1. class Solution {
    2. public:
    3. string ReverseSentence(string str) {
    4. string result;
    5. int len=str.length();
    6. // 使用栈:先进后出
    7. // 依次放入
    8. stack<string> s;
    9. for(int i=0;i
    10. {
    11. int j=i;
    12. // 寻找空格位置
    13. while(j' ')
    14. j++;
    15. // 将子串放入栈
    16. string ss=str.substr(i,j-i);
    17. s.push(ss);
    18. i=j;
    19. }
    20. // 栈依次弹出
    21. int size=s.size();
    22. for(int i=0;i
    23. {
    24. result+=s.top();
    25. // 最后一个子串不加空格
    26. if(i!=(size-1))
    27. result+=" ";
    28. s.pop();
    29. }
    30. return result;
    31. }
    32. };

    解法二:reverse翻转

    1. class Solution {
    2. public:
    3. string ReverseSentence(string str) {
    4. int len = str.length();
    5. // 先整体反转
    6. reverse(str.begin(), str.end());
    7. // 各个子串再次翻转
    8. for(int i = 0; i < len; ++i)
    9. {
    10. int j = i;
    11. //以空格为界找到一个单词
    12. while(j < len && str[j] != ' ')
    13. j++;
    14. //将这个子串翻转
    15. reverse(str.begin() + i, str.begin() + j);
    16. i = j;
    17. }
    18. return str;
    19. }
    20. };

    祝大家情人节快乐!

  • 相关阅读:
    模拟微信小程序加载动画
    10款录屏软分析与选择使用,只看这篇文章就轻松搞定所有,高清4K无水印录屏,博主UP主轻松选择
    土地利用强度(LUI)综合指数
    力扣------两数之和
    hibernate源码(2)--- springboot-jpa是如何引入的
    java基于springboot+vue的毕业设计选题系统
    maven打包出来的jar包引入的其他jar包版本不是pom文件配置的版本
    手机域名是什么?
    [暑假]Vue组件化编程
    13 个比较实用 Shell 脚本
  • 原文地址:https://blog.csdn.net/zhaitianbao/article/details/126152547