• 剑指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 };
  • 相关阅读:
    <q>标签,短文本引用
    使用<span>标签为文字设置单独样式
    html速查表
    禁用第三方键盘
    画虚线的方法 (记录)
    渐变色以及隐藏输入框光标
    iOS9 网络适配
    iOS 截屏/将图片存储到相册或沙盒目录下
    从任意字符串中获取所有的数字
    IOS开发
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11006522.html
Copyright © 2020-2023  润新知