zoukankan      html  css  js  c++  java
  • 面试题58:翻转字符串

    1 题目描述

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

    2 输入

    string str

    3 输出

    string str

    4 样例输入

    “I am a student.”
    

    5 样例输出

    “student. a am I”
    

    6 求解思路

      两次翻转字符串,第一次翻转整个串,第二次翻转子串。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include "MyUtils.h"
    using namespace std;
    
    void Reverse(string &str, int begin, int end){
        if(str.length() < 1 || begin == end)
            return ;
    
        while(begin < end){
            char temp = str[end];
            str[end] = str[begin];
            str[begin] = temp;
            begin++;
            end--;
        }
    }
    
    string ReverseSentence(string str){
        int length = str.length();
        if(length < 1)
            return str;
        int begin = 0;
        int end = length - 1;
        // 先翻转整个串
        Reverse(str, begin, end);
        // 再分别翻转里面的串
        begin = 0;
        end = 0;
        while(begin < length){
            if(str[end] == ' ' || end == length){
                Reverse(str, begin, end - 1);
                end++;
                begin = end;
            }
            else
                end++;
        }
        return str;
    }
    
    int main()
    {
        string str = "I am a student.";
        cout<<ReverseSentence(str);
        return 0;
    }
    
    
  • 相关阅读:
    学习完vue指令 做的一个学生信息录入系统
    vue常用指令总结
    vue介绍以及相关概念理解大全
    class类
    javascript闭包详解
    前端必看网站(一直更新中)
    微信小程序wx.getUserInfo获取用户信息
    微信小程序自定义组件注意事项
    微信小程序自定义选项卡
    uni-app开发注意事项及常用样式
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13556644.html
Copyright © 2011-2022 走看看