题目描述
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
为简单起见,标点符号和普通字母一样处理。
例如输入字符串”I am a student.”,则输出”student. a am I”。
样例
样例
输入:"I am a student."
输出:"student. a am I"
基本思路
本人水平有限,刚开始刷题,这里用的是一个非常基本的方法
主要思路就是:将输入字符串分割后存入vector中,然后倒序取出来拼接
C++ 代码
#include <vector>
#include <iostream>
#include <string.h>
using namespace std;
class Solution {
public:
string reverseWords(string s) {
if (s == "") return "";
vector <string> array;
split(s, array, " ");
string result = "";
for(int i =array.size()-1 ;i > 0 ; i--) {
result.append(array[i]);
result.append(" ");
}
result.append(array[0]);
return result;
}
void split(string& s, vector<string> &v, string c) {
string::size_type pos1, pos2;
pos2 = s.find(c);
pos1 = 0;
while(pos2 != string::npos) {
v.push_back(s.substr(pos1, pos2-pos1));
pos1 = pos2 + c.size();
pos2 = s.find(c, pos1);
}
if (pos1 != s.length())
v.push_back(s.substr(pos1));
}
};