您的位置:首页 > 编程语言

编程题:将一句话里的单词进行倒置

2016-04-03 15:21 405 查看
腾讯2016年4月2号暑假实习移动开发岗的笔试题,编程题第四题大概题目是:

将一句话中的单词进行倒置(单词之间倒转,单词本身不倒置),标点符号不倒置。

比如一句话“I come from China.”,倒置后变成“China. from come I”。

C++的参考代码如下:

方法一:

#include <iostream>
#include <string>
using namespace std;

void reverseStr(string &s,int begin,int end){

while (begin < end) {
char temp = s[begin];
s[begin] = s[end];
s[end] = temp;
begin++;
end--;
}
}

int main(){

string s;

while (getline(cin,s)) {

int length = (int)s.length();
reverseStr(s,0,length-1); //先将句子按字符反转

int j = 0;
for (int i=0; i<length; i++) {
if (s[i]==' ') {
reverseStr(s,j,i-1); //再将句子的单词按字符反转
j=i+1;
}
}
cout<<s<<endl;
}

return 0;
}


方法二:(用stack)

#include<iostream>
#include<stack>
#include<string>
#include<sstream>

using namespace std;

int main(void)
{
stack<string> sstack;
string line, word;

getline(cin, line);

istringstream stream(line);//字符输入流
while (stream >> word)
{
sstack.push(word);
}

while (!sstack.empty())
{
cout << sstack.top() << " ";
sstack.pop();
}

cout << endl;
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息