zoukankan      html  css  js  c++  java
  • 剑指offer: 翻转单词顺序列

    题目描述:

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

    解题思路:

    这题和之前那个左旋转字符串类似,对于字符串中的每个单词先倒序,再对整个字符串倒序即可。可以直接用之前左转字符串的函数。

    要注意第一个非空格的位置为单词的起点,但自己做的过程中,默认字符串是满足日常的输入格式,即单词直接都为一个空格,且开头不为空格,因此一直报错。

    代码:

     1 class Solution {
     2 public:
     3    string ReverseSentence(string str) {
     4        if(str.length()<=0)
     5            return str;
     6         int i=0, j=0;
     7        Inverse(str, 0, str.length()-1);
     8         for(i=0; i<str.length()&&j<str.length();i++)
     9         {
    10             if(str[i]==' '||i==str.length()-1)
    11             {
    12                 Inverse(str, j, i-1);
    13                 j = i+1;
    14             }
    15         }
    16         return str;
    17     }
    18 
    19     void Inverse(string &str, int l, int r)
    20     {
    21         for(int i=l; i<=(l+r)/2; i++)
    22         {
    23             swap(str[i], str[l+r-i]);
    24         }
    25     }
    26 };
  • 相关阅读:
    C#多线程(16):手把手教你撸一个工作流
    C#多线程(15):任务基础③
    C#多线程(14):任务基础②
    C#多线程(13):任务基础①
    C#多线程(12):线程池
    C#多线程(11):线程等待
    C#多线程(10):读写锁
    C#多线程(9):多阶段并行线程
    C#多线程(8):线程完成数
    C#多线程(7):手动线程通知
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11006522.html
Copyright © 2011-2022 走看看