zoukankan      html  css  js  c++  java
  • 牛客网在线编程题——句子反转(3)

    题目描述

    给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

    输入描述:

    输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

    输出描述:

    对于每个测试示例,要求输出句子中单词反转后形成的句子
    示例1

    输入

    hello xiao mi
    

    输出

    mi xiao hello

    解题代码:
    #include <iostream>
    #include <string>
    using namespace std;
    string transfer(string s)
    {
        int len=s.length();
        for(int i=0;i<len/2;i++)
        {
            char temp=s[i];
            s[i]=s[len-i-1];
            s[len-i-1]=temp;
        }
        return s;
    }
    int main(){
        string str;
        getline(cin,str);
        string temp;
        int len=str.length();
        int start=0,end=0;
        for(int i=0;i<len;i++)
        {
            if(str[i]==' '||i==len-1)
            {
                if(i==len-1)
                {
                    end=i;
                }
                else
                {
                    end=i-1;
                }
                string substr;
                for(int j=start;j<=end;j++)
                {
                    substr +=str[j];
                }
                temp+=transfer(substr);//反转句子内的单词
                if(i!=len-1)
                {
                    temp+=' ';
                    start=i+1;
                }else
                {
                    break;
                }
            }
        }
        cout<<transfer(temp)<<endl;//把整个句子当成一个单词进行反转
        return 0;
    }

    值得注意的点:1、接受带空格的字符串输入时,不能直接只用cin>>str;这样只能接受第一个空格之前的字符串,本文用的是getline(cin,str);

              2、解题思路,先反转句子内部的每一个单词,再把整个句子当作一个单词反转,这样在局部和整体各反转一次,就巧妙的实现了单词内正序,单词间倒序。

     
  • 相关阅读:
    Python学习(四十三)—— Djago-admin管理工具
    Python心得基础篇【1】入门篇
    ServletRequest接口和HttpServletRequest接口
    Java swing
    postgresSQL指令
    Oracle数据库相关
    Java 接口
    Java 求一段代码运行所需要的时间——模板方法设计模式
    Java SE基础巩固
    Java开发环境
  • 原文地址:https://www.cnblogs.com/lipanDL/p/10022378.html
Copyright © 2011-2022 走看看