1. 程式人生 > >牛客網線上程式設計題——句子反轉(3)

牛客網線上程式設計題——句子反轉(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、解題思路,先反轉句子內部的每一個單詞,再把整個句子當作一個單詞反轉,這樣在區域性和整體各反轉一次,就巧妙的實現了單詞內正序,單詞間倒序。