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

    题目描述

    牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
     
    整体思路:
      先翻转整个句子,然后再对单个单词进行翻转, 单词之间通过遍历字符串判断字符是否为' ‘’来区分。
     
    代码:
    1.简单的for循环翻转
    class Solution {
    public:
        void reversesort(string& str, int low , int high){
            for(int i = low; i <= (low + high) / 2; i++){
                swap(str[i], str[high+low-i]);
            }
        }
        
        string ReverseSentence(string str) {
            int len = str.size();
            if(str[0] == ' ') return str;
            reversesort(str, 0, len - 1); //整体翻转
            for(int i = 0, r = 0; r <= len;){
                if(str[r] != ' ' && r < len){
                    r++;
                }else{
                    reversesort(str, i, r - 1);
                    i = ++r; //l = r + 1  r = r + 1;
                }
            }
            return str;
        }
    };

    2.

    字符串拼接法

    这个会慢一点,但是好理解。

    class Solution {
    public:
        string ReverseSentence(string str) {
             
            int len = str.size();
            string ans = "";
            string cur = "";
            for(int i = 0; i < len; i++){
                if(str[i] == ' ') ans = " " + cur + ans, cur = "";
                else cur += str[i];
            }
            if(cur.size()) ans = cur + ans;
            return ans;
        }
    };
  • 相关阅读:
    修改其他输入法为android 默认输入法
    {php 数据类型}
    转:PHP.ini配置文件(中文)
    php导出任意mysql数据库中的表去excel文件
    php输出、写入csv
    smarty二级分类代码和模版循环例子
    笔记:使ecshop 模板中可引用 常量
    Windows下Apache2不同域名解析不同目录解决方法
    {php 数组}
    Apache中.htaccess文件功能
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12759218.html
Copyright © 2011-2022 走看看